home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / sound / xgtoolset / source / xgvarfx / xgvarfx.c < prev    next >
C/C++ Source or Header  |  1999-06-14  |  100KB  |  3,013 lines

  1. /*
  2.     XG-VariationFX-Editor V1.0
  3.  
  4.     A  Bars  and  Pipes  tool  for  editing  the  DB50-XG-board  from  YAMAHA.
  5.     Especially the VariationFX-effects with all parameters.
  6.  
  7.     Use it together with the XGMain.ptool form us.
  8.  
  9.     © 1998 Alfred & Matthias Faust (father & son)
  10.  
  11.     The Tool-code based farly on the code for  the  "pc3.ptool"  from  Richard
  12.     Hagen. That's a very good tool, many thanks to him.
  13.  
  14.     Richard has written his tool with DICE. We altered  the  code  to  compile
  15.     with  the  free  GNU-C-compiler  of  the  ADE.  Especially  the  part  was
  16.     transcripted,  that  place  the  imagedate  in   chip-RAM,   because   the
  17.     GNU-C-compiler  hasn't  as  yet  a keyword like DICE or other compiler for
  18.     this.
  19.  
  20.     This  code  is  released  into  the  Public  Domain,  and  may  be  freely
  21.     distributed in its original form.
  22.  
  23.     It is supplied ``as is'', and comes with no warranty.  This  program  code
  24.     was  released  because  it  might  be useful as a starting point for other
  25.     programmers. However, if any damage arises  from  its  use,  the  original
  26.     author and we will not be held liable.
  27.  
  28.     You are free to use and modify this code to your heart's content, provided
  29.     you  acknowledge  me  as  the  original  author in any code that you might
  30.     distribute which is based largely on this code.
  31.  
  32.     I acknowledge that the design of this tool is influenced strongly  by  the
  33.     example  code  supplied  with the Rules for Tools package. However, I have
  34.     made substantial contributions of my own.
  35.  
  36.     Matthias & Alfred Faust
  37.     j.k.dax@t-online.de
  38.  
  39.     History:
  40.     1.0 (26.11.1998)
  41.     Initial Release.
  42.     
  43. */
  44.  
  45. #include "bars.h"
  46. #include "myheader.h"  // from R.Hagen
  47. #include <libraries/dos.h>
  48. #include <proto/exec.h>
  49. #include <proto/intuition.h>
  50. #include <proto/graphics.h>
  51. #include <exec/memory.h>
  52. #include <exec/execbase.h>
  53. #include <exec/types.h>
  54. #include <string.h>
  55. #include <intuition/intuition.h>
  56.  
  57.  
  58. char version[]="\0$VER:XG-VarFX-Edit 1.0 (26.11.98) © Alfred & Matthias Faust";
  59.  
  60. #define VXXG_NAME "XG-VarFX-Edit"
  61.  
  62. #define VXXG_ID          0x56585847
  63. #define VXXG_TYPE        (TOOL_NORMAL | TOOL_NOTPAD)
  64.  
  65. // Variations-Effects
  66.  
  67. #define hall1             0
  68. #define hall2             1
  69. #define room1             2
  70. #define room2             3
  71. #define room3             4
  72. #define stage1            5
  73. #define stage2            6
  74. #define plate             7
  75. #define delaylcr          8
  76. #define delaylr           9
  77. #define echo             10
  78. #define crossdelay       11
  79. #define earlyrefl1       12
  80. #define earlyrefl2       13
  81. #define gatereverb       14
  82. #define reversegate      15
  83. #define karaoke1         16
  84. #define karaoke2         17
  85. #define karaoke3         18
  86. #define chorus1          19
  87. #define chorus2          20
  88. #define chorus3          21
  89. #define chorus4          22
  90. #define celeste1         23
  91. #define celeste2         24
  92. #define celeste3         25
  93. #define celeste4         26
  94. #define flanger1         27
  95. #define flanger2         28
  96. #define flanger3         29
  97. #define symphonic        30
  98. #define rotaryspeaker    31
  99. #define tremolo          32
  100. #define autopan          33
  101. #define phaser1          34
  102. #define phaser2          35
  103. #define distortion       36
  104. #define overdrive        37
  105. #define guitaramp        38
  106. #define autowah          39
  107. #define monoeq           40
  108. #define stereoeq         41
  109.  
  110. char typehexstr[42][4]={
  111. "0100","0101","0200","0201","0202", // hall1+2,room1-3
  112. "0300","0301","0400",               // stage1+2, plate
  113. "0500","0600","0700","0800",        // delayLCR, delayLR, echo, cross delay
  114. "0900","0901",                      // early reflection 1+2
  115. "0a00","0b00",                      // gate reverse, reverse gate
  116. "1400","1401","1402",               // karaoke 1-3
  117. "4100","4101","4102","4108",        // chorus 1-4
  118. "4200","4201","4202","4208",        // celeste 1-4
  119. "4300","4301","4308",               // flanger 1-3
  120. "4400","4500","4600","4700",        // symphonic, rotary speaker, tremolo, auto pan
  121. "4800","4808",                      // phaser 1+2
  122. "4900","4a00",                      // disortion, overdrive
  123. "4b00","4e00",                      // guitar amp, auto wah
  124. "4c00","4d00"                       // 3-band-equalizer(mono), 2-band-equalizer(stereo)
  125. };
  126.  
  127.  
  128. extern struct ExecBase * SysBase;
  129.  
  130. /* the litte Icon in the pipeline */
  131.  
  132. UWORD *VXXG=NULL;
  133.  
  134. static UWORD VXXGdata[] =
  135. {
  136.     /* Plane 0 */
  137.         0x7FFF,0xFE00,
  138.         0x7FFF,0xFE00,
  139.         0x7FFF,0xFE00,
  140.         0x7DDF,0x7600,
  141.         0x796B,0xAE00,
  142.         0x61DE,0xDE00,
  143.         0x61BB,0xDE00,
  144.         0x79FB,0xAE00,
  145.         0x7DBB,0x7600,
  146.         0x7FFF,0xFE00,
  147.         0x7FFF,0xFE00,
  148.         0x7FFF,0xFE00,
  149.     /* Plane 1 */
  150.         0x0000,0x0200,
  151.         0x0000,0x0600,
  152.         0x1FFF,0xFE00,
  153.         0x1F30,0x6600,
  154.         0x9ED3,0x0F00,
  155.         0x87B0,0x9F00,
  156.         0x8773,0x9F00,
  157.         0x9FF3,0x0F00,
  158.         0x1F72,0x6600,
  159.         0x1FFF,0xFE00,
  160.         0x1FFF,0xFE00,
  161.         0x3FFF,0xFE00,
  162.     /* Plane 2 */
  163.         0x0000,0x0000,
  164.         0x0000,0x0000,
  165.         0x1FFF,0xF800,
  166.         0x1FDF,0xF800,
  167.         0x1F6F,0xF800,
  168.         0x1FDF,0xF800,
  169.         0x1FBF,0xF800,
  170.         0x1FFF,0xF800,
  171.         0x1FBF,0xF800,
  172.         0x1FFF,0xF800,
  173.         0x0000,0x0000,
  174.         0x0000,0x0000
  175. };
  176.  
  177. static struct Image VXXG_image = {
  178.   0, 0,
  179.   24 ,  12 ,  3 ,
  180.   NULL,
  181.   0x1f, 0x00,
  182.   NULL
  183. };
  184.  
  185.  
  186. //Definitions of the gadgets
  187.  
  188.  
  189. #define VXTYPE_GADGET            1
  190. #define VXTYPEDOWN_GADGET        2
  191. #define VXTYPEUP_GADGET          3
  192.  
  193. #define VXONE_GADGET             4
  194. #define VXONEDOWN_GADGET         5
  195. #define VXONEUP_GADGET           6
  196.  
  197. #define VXTWO_GADGET             7
  198. #define VXTWODOWN_GADGET         8
  199. #define VXTWOUP_GADGET           9
  200.  
  201. #define VXTHREE_GADGET          10
  202. #define VXTHREEDOWN_GADGET      11
  203. #define VXTHREEUP_GADGET        12
  204.  
  205. #define VXFOUR_GADGET           13
  206. #define VXFOURDOWN_GADGET       14
  207. #define VXFOURUP_GADGET         15
  208.  
  209. #define VXFIVE_GADGET           16
  210. #define VXFIVEDOWN_GADGET       17
  211. #define VXFIVEUP_GADGET         18
  212.  
  213. #define VXSIX_GADGET            19
  214. #define VXSIXDOWN_GADGET        20
  215. #define VXSIXUP_GADGET          21
  216.  
  217. #define VXSEVEN_GADGET          22
  218. #define VXSEVENDOWN_GADGET      23
  219. #define VXSEVENUP_GADGET        24
  220.  
  221. #define VXEIGHT_GADGET          25
  222. #define VXEIGHTDOWN_GADGET      26
  223. #define VXEIGHTUP_GADGET        27
  224.  
  225. #define VXNINE_GADGET           28
  226. #define VXNINEDOWN_GADGET       29
  227. #define VXNINEUP_GADGET         30
  228.  
  229. #define VXTEN_GADGET            31
  230. #define VXTENDOWN_GADGET        32
  231. #define VXTENUP_GADGET          33
  232.  
  233. #define VXELEVEN_GADGET         34
  234. #define VXELEVENDOWN_GADGET     35
  235. #define VXELEVENUP_GADGET       36
  236.  
  237. #define VXTWELVE_GADGET         37
  238. #define VXTWELVEDOWN_GADGET     38
  239. #define VXTWELVEUP_GADGET       39
  240.  
  241. #define VXTHIRTEEN_GADGET       40
  242. #define VXTHIRTEENDOWN_GADGET   41
  243. #define VXTHIRTEENUP_GADGET     42
  244.  
  245. #define VXFOURTEEN_GADGET       43
  246. #define VXFOURTEENDOWN_GADGET   44
  247. #define VXFOURTEENUP_GADGET     45
  248.  
  249. #define VXFIFTEEN_GADGET        46
  250. #define VXFIFTEENDOWN_GADGET    47
  251. #define VXFIFTEENUP_GADGET      48
  252.  
  253. #define VXSIXTEEN_GADGET        49
  254. #define VXSIXTEENDOWN_GADGET    50
  255. #define VXSIXTEENUP_GADGET      51
  256.  
  257. #define VXSEVENTEEN_GADGET      52
  258. #define VXSEVENTEENDOWN_GADGET  53
  259. #define VXSEVENTEENUP_GADGET    54
  260.  
  261. #define VXEIGHTEEN_GADGET      55
  262. #define VXEIGHTEENDOWN_GADGET  56
  263. #define VXEIGHTEENUP_GADGET    57
  264.  
  265. #define VXNINETEEN_GADGET       58
  266. #define VXNINETEENDOWN_GADGET   59
  267. #define VXNINETEENUP_GADGET     60
  268.  
  269. #define VXTWENTY_GADGET         61
  270. #define VXTWENTYDOWN_GADGET     62
  271. #define VXTWENTYUP_GADGET       63
  272.  
  273. #define VXTWENTYONE_GADGET      64
  274. #define VXTWENTYONEDOWN_GADGET  65
  275. #define VXTWENTYONEUP_GADGET    66
  276.  
  277. #define WRITE_GADGET             67
  278.  
  279. //all the gadgets
  280.  
  281. /* VariationFX-Type-Gadget */
  282. struct PropInfo VXXGGadget1SInfo = {
  283.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  284. };
  285.  
  286. struct Image VXXGImage1 = {
  287.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  288. };
  289.  
  290. struct IntuiText VXXGIText1 = {
  291.   2, 0, JAM1, -78, 1, NULL, "VarFXType", NULL
  292. };
  293.  
  294. struct Gadget VXXGGadget1 = {
  295.   NULL, 85, 31, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  296.   (APTR)&VXXGImage1, NULL, &VXXGIText1, NULL, (APTR)&VXXGGadget1SInfo, VXTYPE_GADGET, NULL
  297. };
  298.  
  299.  
  300. /* VariationFX-one-Gadget */
  301. struct PropInfo VXXGGadget2SInfo = {
  302.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  303. };
  304.  
  305. struct Image VXXGImage2 = {
  306.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  307. };
  308. struct Gadget VXXGGadget2 = {
  309.   &VXXGGadget1, 85, 42, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  310.   (APTR)&VXXGImage2, NULL, NULL, NULL, (APTR)&VXXGGadget2SInfo, VXONE_GADGET, NULL
  311. };
  312.  
  313.  
  314. /* VariationFX-two-Gadget */
  315. struct PropInfo VXXGGadget3SInfo = {
  316.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  317. };
  318.  
  319. struct Image VXXGImage3 = {
  320.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  321. };
  322.  
  323. struct Gadget VXXGGadget3 = {
  324.   &VXXGGadget2, 85, 53, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  325.   (APTR)&VXXGImage3, NULL, NULL, NULL, (APTR)&VXXGGadget3SInfo, VXTWO_GADGET, NULL
  326. };
  327.  
  328. //VariationFX-three-Gadget
  329. struct PropInfo VXXGGadget4SInfo = {
  330.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  331. };
  332.  
  333. struct Image VXXGImage4 = {
  334.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  335. };
  336.  
  337. struct Gadget VXXGGadget4 = {
  338.   &VXXGGadget3, 85, 64, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  339.   (APTR)&VXXGImage4, NULL, NULL, NULL, (APTR)&VXXGGadget4SInfo, VXTHREE_GADGET, NULL
  340. }; //  VXTHREE_GADGET
  341.  
  342. //VariationFX-four-Gadget
  343. struct PropInfo VXXGGadget5SInfo = {
  344.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  345. };
  346.  
  347. struct Image VXXGImage5 = {
  348.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  349. };
  350.  
  351. struct Gadget VXXGGadget5 = {
  352.   &VXXGGadget4, 85, 75, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  353.   (APTR)&VXXGImage5, NULL, NULL, NULL, (APTR)&VXXGGadget5SInfo, VXFOUR_GADGET, NULL
  354. }; //VXFOUR_GADGET
  355.  
  356.  
  357. //VariationFX-five-Gadget
  358. struct PropInfo VXXGGadget6SInfo = {
  359.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  360. };
  361.  
  362. struct Image VXXGImage6 = {
  363.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  364. };
  365.  
  366. struct Gadget VXXGGadget6 = {
  367.   &VXXGGadget5, 85, 86, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  368.   (APTR)&VXXGImage6, NULL, NULL, NULL, (APTR)&VXXGGadget6SInfo, VXFIVE_GADGET, NULL
  369. }; //VXFIVE_GADGET
  370.  
  371. //VariationFX-six-Gadget
  372. struct PropInfo VXXGGadget7SInfo = {
  373.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  374. };
  375.  
  376. struct Image VXXGImage7 = {
  377.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  378. };
  379.  
  380. struct Gadget VXXGGadget7 = {
  381.   &VXXGGadget6, 85, 97, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  382.   (APTR)&VXXGImage7, NULL, NULL, NULL, (APTR)&VXXGGadget7SInfo, VXSIX_GADGET, NULL
  383. }; //VXSIX_GADGET
  384.  
  385. //VariationFX-seven-Gadget
  386. struct PropInfo VXXGGadget8SInfo = {
  387.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  388. };
  389.  
  390. struct Image VXXGImage8 = {
  391.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  392. };
  393.  
  394. struct Gadget VXXGGadget8 = {
  395.   &VXXGGadget7, 85, 108, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  396.   (APTR)&VXXGImage8, NULL, NULL, NULL, (APTR)&VXXGGadget8SInfo, VXSEVEN_GADGET, NULL
  397. }; //VXSEVEN_GADGET
  398.  
  399.  
  400. //VariationFX-eight-Gadget
  401. struct PropInfo VXXGGadget9SInfo = {
  402.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  403. };
  404.  
  405. struct Image VXXGImage9 = {
  406.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  407. };
  408.  
  409. struct Gadget VXXGGadget9 = {
  410.   &VXXGGadget8, 85, 119, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  411.   (APTR)&VXXGImage9, NULL, NULL, NULL, (APTR)&VXXGGadget9SInfo, VXEIGHT_GADGET, NULL
  412. }; //VXEIGHT_GADGET
  413.  
  414.  
  415. //VariationFX-nine-Gadget
  416. struct PropInfo VXXGGadget10SInfo = {
  417.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  418. };
  419.  
  420. struct Image VXXGImage10 = {
  421.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  422. };
  423.  
  424. struct Gadget VXXGGadget10 = {
  425.   &VXXGGadget9, 85, 130, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  426.   (APTR)&VXXGImage10, NULL, NULL, NULL, (APTR)&VXXGGadget10SInfo, VXNINE_GADGET, NULL
  427. }; //VXNINE_GADGET
  428.  
  429. //VariationFX-ten-Gadget
  430. struct PropInfo VXXGGadget11SInfo = {
  431.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  432. };
  433.  
  434. struct Image VXXGImage11 = {
  435.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  436. };
  437.  
  438. struct Gadget VXXGGadget11 = {
  439.   &VXXGGadget10, 85, 141, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  440.   (APTR)&VXXGImage11, NULL, NULL, NULL, (APTR)&VXXGGadget11SInfo, VXTEN_GADGET, NULL
  441. }; //VXTEN_GADGET
  442.  
  443. //VariationFX-eleven-Gadget
  444. struct PropInfo VXXGGadget12SInfo = {
  445.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  446. };
  447.  
  448. struct Image VXXGImage12 = {
  449.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  450. };
  451.  
  452. struct Gadget VXXGGadget12 = {
  453.   &VXXGGadget11, 85, 152, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  454.   (APTR)&VXXGImage12, NULL, NULL, NULL, (APTR)&VXXGGadget12SInfo, VXELEVEN_GADGET, NULL
  455. }; //VXELEVEN_GADGET
  456.  
  457. //VariationFX-twelve-Gadget
  458. struct PropInfo VXXGGadget13SInfo = {
  459.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  460. };
  461.  
  462. struct Image VXXGImage13 = {
  463.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  464. };
  465.  
  466. struct Gadget VXXGGadget13 = {
  467.   &VXXGGadget12, 85, 163, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  468.   (APTR)&VXXGImage13, NULL, NULL, NULL, (APTR)&VXXGGadget13SInfo, VXTWELVE_GADGET, NULL
  469. }; //VXTWELVE_GADGET
  470.  
  471.  
  472. //VariationFX-thirteen-Gadget
  473. struct PropInfo VXXGGadget14SInfo = {
  474.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  475. };
  476.  
  477. struct Image VXXGImage14 = {
  478.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  479. };
  480.  
  481. struct Gadget VXXGGadget14 = {
  482.   &VXXGGadget13, 85, 174, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  483.   (APTR)&VXXGImage14, NULL, NULL, NULL, (APTR)&VXXGGadget14SInfo, VXTHIRTEEN_GADGET, NULL
  484. }; //VXTHIRTEEN_GADGET
  485.  
  486. //VariationFX-fourteen-Gadget
  487. struct PropInfo VXXGGadget15SInfo = {
  488.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  489. };
  490.  
  491. struct Image VXXGImage15 = {
  492.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  493. };
  494.  
  495. struct Gadget VXXGGadget15 = {
  496.   &VXXGGadget14, 85, 185, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  497.   (APTR)&VXXGImage15, NULL, NULL, NULL, (APTR)&VXXGGadget15SInfo, VXFOURTEEN_GADGET, NULL
  498. }; //VXFOURTEEN_GADGET
  499.  
  500. //VariationFX-fifteen-Gadget
  501. struct PropInfo VXXGGadget16SInfo = {
  502.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  503. };
  504.  
  505. struct Image VXXGImage16 = {
  506.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  507. };
  508.  
  509. struct Gadget VXXGGadget16 = {
  510.   &VXXGGadget15, 85, 196, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  511.   (APTR)&VXXGImage16, NULL, NULL, NULL, (APTR)&VXXGGadget16SInfo, VXFIFTEEN_GADGET, NULL
  512. }; //VXFIFTEEN_GADGET
  513.  
  514. //VariationFX-sixteen-Gadget
  515. struct PropInfo VXXGGadget17SInfo = {
  516.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  517. };
  518.  
  519. struct Image VXXGImage17 = {
  520.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  521. };
  522.  
  523. struct Gadget VXXGGadget17 = {
  524.   &VXXGGadget16, 85, 207, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  525.   (APTR)&VXXGImage17, NULL, NULL, NULL, (APTR)&VXXGGadget17SInfo, VXSIXTEEN_GADGET, NULL
  526. }; //VXSIXTEEN_GADGET
  527.  
  528. //VariationFX-seventeen-Gadget
  529. struct PropInfo VXXGGadget18SInfo = {
  530.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  531. };
  532.  
  533. struct Image VXXGImage18 = {
  534.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  535. };
  536.  
  537. struct Gadget VXXGGadget18 = {
  538.   &VXXGGadget17, 85, 218, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  539.   (APTR)&VXXGImage18, NULL, NULL, NULL, (APTR)&VXXGGadget18SInfo, VXSEVENTEEN_GADGET, NULL
  540. }; //VXSEVENTEEN_GADGET
  541.  
  542. //VariationFX-eighteen-Gadget
  543. struct PropInfo VXXGGadget19SInfo = {
  544.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  545. };
  546.  
  547. struct Image VXXGImage19 = {
  548.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  549. };
  550.  
  551. struct Gadget VXXGGadget19 = {
  552.   &VXXGGadget18, 85, 229, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  553.   (APTR)&VXXGImage19, NULL, NULL, NULL, (APTR)&VXXGGadget19SInfo, VXEIGHTEEN_GADGET, NULL
  554. }; //VXeighteen_GADGET
  555.  
  556. //VariationFX-nineteen-Gadget
  557. struct PropInfo VXXGGadget20SInfo = {
  558.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  559. };
  560.  
  561. struct Image VXXGImage20 = {
  562.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  563. };
  564.  
  565. struct Gadget VXXGGadget20 = {
  566.   &VXXGGadget19, 85, 240, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  567.   (APTR)&VXXGImage20, NULL, NULL, NULL, (APTR)&VXXGGadget20SInfo, VXNINETEEN_GADGET, NULL
  568. }; //VXNINETEEN_GADGET
  569.  
  570. //VariationFX-twenty-Gadget
  571. struct PropInfo VXXGGadget21SInfo = {
  572.   AUTOKNOB+FREEHORIZ, -16384,  -1, 16384,  -1,
  573. };
  574.  
  575. struct Image VXXGImage21 = {
  576.   0, 0, 102, 6, 0, NULL, 0x0000, 0x0000, NULL
  577. };
  578.  
  579. struct Gadget VXXGGadget21 = {
  580.   &VXXGGadget20, 85, 251, 150, 9, GFLG_GADGHBOX|GFLG_GADGHIMAGE, RELVERIFY|GADGIMMEDIATE, PROPGADGET,
  581.   (APTR)&VXXGImage21, NULL, NULL, NULL, (APTR)&VXXGGadget21SInfo, VXTWENTY_GADGET, NULL
  582. }; //VXTWENTY_GADGET
  583.  
  584. /* Test gadget. */
  585. struct IntuiText VXXGIText22 = {
  586.   4,0,JAM1,4,2,NULL,"Write",NULL
  587.   };
  588.  
  589. struct Gadget VXXGGadget22 = {
  590.   &VXXGGadget21,117,269,45,11,GFLG_GADGHBOX|GFLG_GADGHIMAGE,RELVERIFY|GADGIMMEDIATE,BOOLGADGET,
  591.   (APTR)NULL,NULL,&VXXGIText22,NULL,NULL,WRITE_GADGET,NULL
  592.   };
  593.  
  594.  
  595.  
  596. //the mainwindowstructure
  597.  
  598. struct NewWindow VXXGNewWindowStructure1 = {
  599.   5, 167,
  600.   275, 290,
  601.   0, 6,
  602.   GADGETDOWN|GADGETUP|CLOSEWINDOW,
  603.   WINDOWDRAG|WINDOWDEPTH|WINDOWCLOSE|ACTIVATE|NOCAREREFRESH,
  604.   &VXXGGadget22,
  605.   NULL,
  606.   "XGVariationFX-Editor",
  607.   NULL,
  608.   NULL,
  609.   5, 5,
  610.   -1, -1,
  611.   CUSTOMSCREEN
  612. };
  613.  
  614.  
  615. struct VXXGTool {
  616.   struct Tool tool;
  617.  
  618.   UBYTE vrfxtype;
  619.   UBYTE vrfxone;
  620.   UBYTE vrfxtwo;
  621.   UBYTE vrfxthree;
  622.   UBYTE vrfxfour;
  623.   UBYTE vrfxfive;
  624.   UBYTE vrfxsix;
  625.   UBYTE vrfxseven;
  626.   UBYTE vrfxeight;
  627.   UBYTE vrfxnine;
  628.   UBYTE vrfxten;
  629.   UBYTE vrfxeleven;
  630.   UBYTE vrfxtwelve;
  631.   UBYTE vrfxthirteen;
  632.   UBYTE vrfxfourteen;
  633.   UBYTE vrfxfifteen;
  634.   UBYTE vrfxsixteen;
  635.   UBYTE vrfxseventeen;
  636.   UBYTE vrfxeighteen;
  637.   UBYTE vrfxnineteen;
  638.   UBYTE vrfxtwenty;
  639.  
  640.   char *typesysex;
  641.   char *onesysex;
  642.   char *twosysex;
  643.   char *threesysex;
  644.   char *foursysex;
  645.   char *fivesysex;
  646.   char *sixsysex;
  647.   char *sevensysex;
  648.   char *eightsysex;
  649.   char *ninesysex;
  650.   char *tensysex;
  651.   char *elevensysex;
  652.   char *twelvesysex;
  653.   char *thirteensysex;
  654.   char *fourteensysex;
  655.   char *fifteensysex;
  656.   char *sixteensysex;
  657.   char *seventeensysex;
  658.   char *eighteensysex;
  659.   char *nineteensysex;
  660.   char *twentysysex;
  661. };
  662.  
  663. int typeval;
  664. static struct ToolMaster master;
  665.  
  666. extern struct Functions *functions;
  667.  
  668. //initial values
  669. static void VXXG_tool_init(struct VXXGTool *tool)
  670. {
  671.  
  672.  
  673.  
  674.   tool->vrfxtype =        0x08;
  675.   tool->vrfxone =         0x1a;
  676.   tool->vrfxtwo =         0x0d;
  677.   tool->vrfxthree =       0x27;
  678.   tool->vrfxfour =        0x27;
  679.   tool->vrfxfive =        0x4a;
  680.   tool->vrfxsix =         0x64;
  681.   tool->vrfxseven =       0x0a;
  682.   tool->vrfxeight =       0x00;
  683.   tool->vrfxnine =        0x00;
  684.   tool->vrfxten =         0x20;
  685.   tool->vrfxeleven =      0x40;
  686.   tool->vrfxtwelve =      0x40;
  687.   tool->vrfxthirteen =    0x00;
  688.   tool->vrfxfourteen =    0x00;
  689.   tool->vrfxfifteen =     0x00;
  690.   tool->vrfxsixteen =     0x00;
  691.   tool->vrfxseventeen =   0x14;
  692.   tool->vrfxeighteen =    0x0c;
  693.   tool->vrfxnineteen =    0x12;
  694.   tool->vrfxtwenty =      0x0c;
  695.  
  696.   tool->typesysex       = NULL;
  697.   tool->onesysex        = NULL;
  698.   tool->twosysex        = NULL;
  699.   tool->threesysex      = NULL;
  700.   tool->foursysex       = NULL;
  701.   tool->fivesysex       = NULL;
  702.   tool->sixsysex        = NULL;
  703.   tool->sevensysex      = NULL;
  704.   tool->eightsysex      = NULL;
  705.   tool->ninesysex       = NULL;
  706.   tool->tensysex        = NULL;
  707.   tool->elevensysex     = NULL;
  708.   tool->twelvesysex     = NULL;
  709.   tool->thirteensysex   = NULL;
  710.   tool->fourteensysex   = NULL;
  711.   tool->fifteensysex    = NULL;
  712.   tool->sixteensysex    = NULL;
  713.   tool->seventeensysex  = NULL;
  714.   tool->eighteensysex   = NULL;
  715.   tool->nineteensysex   = NULL;
  716.   tool->twentysysex     = NULL;
  717.  
  718.   tool->tool.touched = TOUCH_INIT;
  719. }
  720.  
  721.  
  722. static struct Event * __saveds processeventcode(struct Event *event)
  723. {
  724.   event->tool = event->tool->next;
  725.   return(event);
  726. }
  727. // the routine for sending SysEx-data thru the pipeline
  728.  
  729. static void __saveds sendsysex(char *buff,  short size,  struct VXXGTool *tool,  const LONG time)
  730. {
  731.     struct StringEvent *event;
  732.     struct String *string;
  733.  
  734.     event = (struct StringEvent *) (*functions->allocevent)();
  735.      if (event)
  736.       {
  737.     string = (struct String *) (*functions->myalloc)(size + 3, MEMF_CLEAR);
  738.     if (string)
  739.     {
  740.         event->string = string;
  741.         memcpy(string->string,  buff,  size);
  742.         string->length = size + 2;
  743.         event->type = EVENT_SYSX;
  744.         event->status = MIDI_SYSX;
  745.         event->time = time;
  746.         event->tool = tool->tool.next;
  747.         WaitTOF();
  748.         (*functions->qevent)(event);
  749.         (*functions->myfree)(string);
  750.     }
  751.       }
  752.  
  753. }
  754.  
  755. //the necessary functions for writing to track
  756.  
  757. static BOOL lock_clip(struct Clip *clip)
  758. {
  759.   Forbid();
  760.   if (clip->locked == 0)
  761.     {
  762.       clip->locked = 1;
  763.       Permit();
  764.       return TRUE;
  765.     }
  766.   else
  767.     {
  768.       Permit();
  769.       return FALSE;
  770.     }
  771. }
  772.  
  773. static void unlock_clip(struct Clip *clip)
  774. {
  775.   clip->locked = 0;
  776. }
  777.  
  778. //writes sysex into track
  779.  
  780. static void __saveds insertsysex(char *buff, short size, struct VXXGTool *tool,  const LONG time)
  781. {
  782.     struct StringEvent *event;
  783.     struct String *string;
  784.  
  785.     event = (struct StringEvent *) (*functions->allocevent)();
  786.      if (event)
  787.       {
  788.     string = (struct String *) (*functions->myalloc)(size + 3, MEMF_CLEAR);
  789.     if (string)
  790.     {
  791.         event->next = NULL;
  792.         event->string = string;
  793.         memcpy(string->string,  buff,  size);
  794.         string->length = size + 2;
  795.         event->type = EVENT_SYSX;
  796.         event->status = MIDI_SYSX;
  797.         event->time = time;
  798.         event->tool = tool->tool.next;
  799.         if (lock_clip(&(tool->tool.track->clip)))
  800.           {
  801.         event->next = (struct StringEvent *)tool->tool.track->clip.events.first;
  802.         tool->tool.track->clip.events.first = (struct Event *)(*functions->sorteventlist)(event);
  803.         unlock_clip(&(tool->tool.track->clip));
  804.           }
  805.         else
  806.           {
  807.         (*functions->freelist)(event);
  808.           }
  809.  
  810.     }
  811.       }
  812.  
  813. }
  814.  
  815. static void __saveds transsysex(struct VXXGTool *tool,  const LONG time,  char *sysx, short sel)
  816. {
  817.   LONG size;
  818.   int a,  b,  x,  y ;
  819.   UBYTE abuf[32];
  820.   char chr[4];
  821.   char *zbuf = NULL;
  822.  
  823.     //translate tool->typesysexer into hex
  824.  
  825.   size = strlen(sysx);
  826.   zbuf = (char *)AllocVec(size+2,  MEMF_ANY|MEMF_CLEAR);
  827.   if(zbuf)
  828.      {
  829.        CopyMem(sysx,  zbuf,  size);
  830.        b=0;
  831.        for(a=0;a < size;a=a+2)
  832.        {
  833.          chr[0] = zbuf[a];
  834.          chr[1] = zbuf[a+1];
  835.  
  836.          x=(isdigit((int)chr[0]))? (chr[0]&0xF) : ((chr[0]&0xDF)-55); //this is the
  837.          y=(isdigit((int)chr[1]))? (chr[1]&0xF) : ((chr[1]&0xDF)-55); //the translate-core
  838.  
  839.          abuf[b++] = ((x<<4)|y);   //writing with bitmanipulation
  840.         }
  841.       //send hexdata
  842.  
  843.        FreeVec(zbuf);
  844.        if (sel == 0) insertsysex(abuf, b, tool,  time);
  845.        if (sel == 1) sendsysex(abuf, b, tool,  time);
  846.  
  847.      }
  848.  
  849. }
  850.  
  851. //displays the slider-label
  852.  
  853. void __saveds label(struct RastPort *rp, int y, char *textt)
  854. {
  855.   char text[10];
  856.  
  857.   sprintf(text, "%9.9s", textt);
  858.   Move(rp, 7, y);
  859.   Text(rp, text, 9);
  860. }
  861.  
  862. //displays the selection in the slider-labels
  863.  
  864. void __saveds select(struct RastPort *rp, int y, char *textt, UBYTE zahl)
  865. {
  866.   char text[6];
  867.  
  868.   sprintf(text, "%6.6s", textt);
  869.   Move(rp, 7, y);
  870.   Text(rp, text, 9);
  871. }
  872.  
  873.  
  874. // Writes all values of the sliders and more  in the main window
  875.  
  876. LONG __saveds display_routine(struct Window *window, struct Gadget *gadget, ULONG value)
  877. {
  878.   int i=0;
  879.   char *vrfxtypet, *inputt, *atypt, *ertypt, *pdirt;
  880.   char text[10];
  881.   char vrfxtypetext[20];
  882.   char inputtext[6];
  883.   char atyptext[6];
  884.   char ertyptext[6];
  885.   char pdirtext[6];
  886.   char name[15];
  887.   const short id = gadget->GadgetID;
  888.   struct RastPort *rp = window->RPort;
  889.  
  890.   char vrfxtypename[42][17]={
  891.   "Hall 1           ","Hall 2           ","Room 1           ","Room 2           ","Room 3           ",
  892.   "Stage 1          ","Stage 2          ","Plate            ","Delay LCR        ","Delay LR         ",
  893.   "Echo             ","Cross Delay      ","EarlyReflection 1","EarlyReflection 2","Gate Reverb      ",
  894.   "Reverse Gate     ","Karaoke 1        ","Karaoke 2        ","Karaoke 3        ","Chorus 1         ",
  895.   "Chorus 2         ","Chorus 3         ","Chorus 4         ","Celeste 1        ","Celeste 2        ",
  896.   "Celeste 3        ","Celeste 4        ","Flanger 1        ","Flanger 2        ","Flanger 3        ",
  897.   "Symphonic        ","Rotary Speaker   ","Tremolo          ","Auto Pan         ","Phaser 1         ",
  898.   "Phaser 2         ","Distortion       ","Overdrive        ","Guitar Amplifier ","Auto Wah         ",
  899.   "3-Band-Equalizer ","2-Band-Equalizer "};
  900.  
  901.   char propname[62][9]={
  902.   "         ",  //  0
  903.   "AM Depth ",  //  1
  904.   "ATyp     ",  //  2
  905.   "CchDelay ",  //  3
  906.   "CchLevel ",  //  4
  907.   "CtofFrqOf",  //  5
  908.   "Delay2Lvl",  //  6
  909.   "DelayOffs",  //  7
  910.   "DelayTime",  //  8
  911.   "Density  ",  //  9
  912.   "Diffusion",  // 10
  913.   "Drive    ",  // 11
  914.   "Dry<->Wet",  // 12
  915.   "EdgClpCve",  // 13
  916.   "EqHigFreq",  // 14
  917.   "EqHigGain",  // 15
  918.   "EqLowFreq",  // 16
  919.   "EqLowGain",  // 17
  920.   "EqMidFreq",  // 18
  921.   "EqMidGain",  // 19
  922.   "EqMidWdth",  // 20
  923.   "LFOPhDiff",  // 21
  924.   "ERTyp    ",  // 22
  925.   "F/R Depth",  // 23
  926.   "FeedbLevl",  // 24
  927.   "FeedbDlay",  // 25
  928.   "FeedbDly1",  // 26
  929.   "FeedbDly2",  // 27
  930.   "HighDamp ",  // 28
  931.   "HpfCutoff",  // 29
  932.   "InitDelay",  // 30
  933.   "Input:   ",  // 31
  934.   "L->RDelay",  // 32
  935.   "L/R Depth",  // 33
  936.   "LchDelay ",  // 34
  937.   "LchDelay1",  // 35
  938.   "LchDelay2",  // 36
  939.   "LchFdbLvl",  // 37
  940.   "LFOFreqnc",  // 38
  941.   "LFODepth ",  // 39
  942.   "Liveness ",  // 40
  943.   "LpfCutoff",  // 41
  944.   "OutputLvl",  // 42
  945.   "PDir     ",  // 43
  946.   "PhShtOffs",  // 44
  947.   "PM Depth ",  // 45
  948.   "R->LDelay",  // 46
  949.   "RchDelay ",  // 47
  950.   "RchDelay1",  // 48
  951.   "RchDelay2",  // 49
  952.   "RchFdbLvl",  // 50
  953.   "Resonance",  // 51
  954.   "RevTime  ",  // 52
  955.   "RoomSize ",  // 53
  956.   "SndVxtoCh",  // 54
  957.   "SndVxtoRv",  // 55
  958.   "Typ:     ",  // 56
  959.   "Stage    ",  // 57
  960.   "VarPan   ",  // 58
  961.   "VarReturn",  // 59
  962.   "RevDelay ",  // 60
  963.   "Er/RevBal"}; // 61
  964.  
  965.  
  966.   char input[7][2]={
  967.   "Mo","St"," L"," R","LR"," A"," B"};
  968.   char atyp[4][5]={
  969.   "  off","Stack","Combo"," Tube"};
  970.   char ertyp[6][3]={
  971.   "S-H","L-H","Rdm","Rvs","Plt","Spr"};
  972.   char pdir[6][4]={
  973.   "L<>R"," L>R"," R>L","Ltrn","Rtrn"," L.R"};
  974.  
  975.      switch (id)
  976.           {
  977.           case VXTYPE_GADGET:
  978.         vrfxtypet = vrfxtypename[value];
  979.         sprintf(vrfxtypetext,  "%17.17s",  vrfxtypet);
  980.         SetAPen(rp, 7);
  981.         SetBPen(rp, 6);
  982.         SetDrMd(rp,  INVERSVID|JAM2);
  983.         Move(rp,  83, 26);
  984.         Text(rp,  vrfxtypetext,  17);
  985.         SetAPen(rp,  2);
  986.         SetBPen(rp,  0);
  987.         SetDrMd(rp,  JAM2);
  988.               if ((value == hall1)|
  989.              (value == hall2)|
  990.              (value == room1)|
  991.              (value == room2)|
  992.              (value == room3)|
  993.              (value == stage1)|
  994.              (value == stage2)|
  995.              (value == plate))
  996.              {
  997.              label(rp, 49,propname[52]);
  998.              label(rp, 60,propname[10]);
  999.              label(rp, 71,propname[30]);
  1000.              label(rp, 82,propname[29]);
  1001.              label(rp, 93,propname[41]);
  1002.              label(rp,104,propname[0]);
  1003.              label(rp,115,propname[0]);
  1004.              label(rp,126,propname[0]);
  1005.              label(rp,137,propname[0]);
  1006.              label(rp,148,propname[12]);
  1007.  
  1008.  
  1009.              if ((value == hall1)|(value == stage1))
  1010.              {
  1011.              label(rp,159,propname[59]);
  1012.              label(rp,170,propname[58]);
  1013.              label(rp,181,propname[55]);
  1014.              label(rp,192,propname[54]);
  1015.              }
  1016.  
  1017.              else
  1018.              {
  1019.              label(rp,159,propname[0]);
  1020.              label(rp,170,propname[0]);
  1021.              label(rp,181,propname[0]);
  1022.              label(rp,192,propname[0]);
  1023.              }
  1024.  
  1025.              label(rp,203,propname[0]);
  1026.              label(rp,214,propname[60]);
  1027.              label(rp,225,propname[9]);
  1028.              label(rp,236,propname[61]);
  1029.              label(rp,247,propname[24]);
  1030.              label(rp,258,propname[0]);
  1031.  
  1032.              SetAPen(rp,  1);
  1033.              }
  1034.             else if (value == delaylcr)
  1035.              {
  1036.              label(rp, 49,propname[34]);    //42
  1037.              label(rp, 60,propname[47]);    //44
  1038.              label(rp, 71,propname[3]);     //46
  1039.              label(rp, 82,propname[25]);    //48
  1040.              label(rp, 93,propname[24]);    //4a
  1041.              label(rp,104,propname[4]);     //4c
  1042.              label(rp,115,propname[28]);    //4e
  1043.              label(rp,126,propname[0]);     //50
  1044.              label(rp,137,propname[0]);     //52
  1045.              label(rp,148,propname[12]);    //54
  1046.              label(rp,159,propname[59]);    //56
  1047.              label(rp,170,propname[58]);    //57
  1048.              label(rp,181,propname[55]);    //58
  1049.              label(rp,192,propname[54]);    //59
  1050.              label(rp,203,propname[0]);     //70
  1051.              label(rp,214,propname[0]);     //71
  1052.              label(rp,225,propname[16]);    //72
  1053.              label(rp,236,propname[17]);    //73
  1054.              label(rp,247,propname[14]);    //74
  1055.              label(rp,258,propname[15]);    //75
  1056.  
  1057.              SetAPen(rp,  1);
  1058.              }
  1059.             else if (value == delaylr)
  1060.              {
  1061.              label(rp, 49,propname[34]);    //42
  1062.              label(rp, 60,propname[47]);    //44
  1063.              label(rp, 71,propname[26]);    //46
  1064.              label(rp, 82,propname[27]);    //48
  1065.              label(rp, 93,propname[24]);    //4a
  1066.              label(rp,104,propname[28]);    //4c
  1067.              label(rp,115,propname[0]);     //4e
  1068.              label(rp,126,propname[0]);     //50
  1069.              label(rp,137,propname[0]);     //52
  1070.              label(rp,148,propname[12]);    //54
  1071.              label(rp,159,propname[59]);    //56
  1072.              label(rp,170,propname[58]);    //57
  1073.              label(rp,181,propname[55]);    //58
  1074.              label(rp,192,propname[54]);    //59
  1075.              label(rp,203,propname[0]);     //70
  1076.              label(rp,214,propname[0]);     //71
  1077.              label(rp,225,propname[16]);    //72
  1078.              label(rp,236,propname[17]);    //73
  1079.              label(rp,247,propname[14]);    //74
  1080.              label(rp,258,propname[15]);    //75
  1081.  
  1082.              SetAPen(rp,  1);
  1083.              }
  1084.             else if (value == echo)
  1085.              {
  1086.              label(rp, 49,propname[35]);    //42
  1087.              label(rp, 60,propname[37]);    //44
  1088.              label(rp, 71,propname[48]);    //46
  1089.              label(rp, 82,propname[50]);    //48
  1090.              label(rp, 93,propname[28]);    //4a
  1091.              label(rp,104,propname[36]);    //4c
  1092.              label(rp,115,propname[49]);    //4e
  1093.              label(rp,126,propname[6]);     //50
  1094.              label(rp,137,propname[0]);     //52
  1095.              label(rp,148,propname[12]);    //54
  1096.              label(rp,159,propname[59]);    //56
  1097.              label(rp,170,propname[58]);    //57
  1098.              label(rp,181,propname[55]);    //58
  1099.              label(rp,192,propname[54]);    //59
  1100.              label(rp,203,propname[0]);     //70
  1101.              label(rp,214,propname[0]);     //71
  1102.              label(rp,225,propname[16]);    //72
  1103.              label(rp,236,propname[17]);    //73
  1104.              label(rp,247,propname[14]);    //74
  1105.              label(rp,258,propname[15]);    //75
  1106.  
  1107.              SetAPen(rp,  1);
  1108.              }
  1109.             else if (value == crossdelay)
  1110.              {
  1111.              label(rp, 49,propname[32]);    //42
  1112.              label(rp, 60,propname[46]);    //44
  1113.              label(rp, 71,propname[24]);    //46
  1114.              label(rp, 82,propname[31]);    //48
  1115.              label(rp, 93,propname[28]);    //4a
  1116.              label(rp,104,propname[0]);     //4c
  1117.              label(rp,115,propname[0]);     //4e
  1118.              label(rp,126,propname[0]);     //50
  1119.              label(rp,137,propname[0]);     //52
  1120.              label(rp,148,propname[12]);    //54
  1121.              label(rp,159,propname[59]);    //56
  1122.              label(rp,170,propname[58]);    //57
  1123.              label(rp,181,propname[55]);    //58
  1124.              label(rp,192,propname[54]);    //59
  1125.              label(rp,203,propname[0]);     //70
  1126.              label(rp,214,propname[0]);     //71
  1127.              label(rp,225,propname[16]);    //72
  1128.              label(rp,236,propname[17]);    //73
  1129.              label(rp,247,propname[14]);    //74
  1130.              label(rp,258,propname[15]);    //75
  1131.  
  1132.              SetAPen(rp,  1);
  1133.              }
  1134.             else if ((value == earlyrefl1)|
  1135.                 (value == earlyrefl2))
  1136.              {
  1137.              label(rp, 49,propname[22]);
  1138.              label(rp, 60,propname[53]);
  1139.              label(rp, 71,propname[30]);
  1140.              label(rp, 82,propname[10]);
  1141.              label(rp, 93,propname[24]);
  1142.              label(rp,104,propname[29]);
  1143.              label(rp,115,propname[41]);
  1144.              label(rp,126,propname[0]);
  1145.              label(rp,137,propname[0]);
  1146.              label(rp,148,propname[12]);
  1147.              label(rp,159,propname[59]);
  1148.              label(rp,170,propname[58]);
  1149.              label(rp,181,propname[55]);
  1150.              label(rp,192,propname[54]);
  1151.              label(rp,203,propname[40]);
  1152.              label(rp,214,propname[9]);
  1153.              label(rp,225,propname[28]);
  1154.              label(rp,236,propname[0]);
  1155.              label(rp,247,propname[0]);
  1156.              label(rp,258,propname[0]);
  1157.  
  1158.              SetAPen(rp,  1);
  1159.              }
  1160.             else if ((value == gatereverb)|
  1161.                 (value == reversegate))
  1162.              {
  1163.              label(rp, 49,propname[56]);
  1164.              label(rp, 60,propname[53]);
  1165.              label(rp, 71,propname[10]);
  1166.              label(rp, 82,propname[30]);
  1167.              label(rp, 93,propname[24]);
  1168.              label(rp,104,propname[29]);
  1169.              label(rp,115,propname[41]);
  1170.              label(rp,126,propname[0]);
  1171.              label(rp,137,propname[0]);
  1172.              label(rp,148,propname[12]);
  1173.              label(rp,159,propname[59]);
  1174.              label(rp,170,propname[58]);
  1175.              label(rp,181,propname[55]);
  1176.              label(rp,192,propname[54]);
  1177.              label(rp,203,propname[40]);
  1178.              label(rp,214,propname[9]);
  1179.              label(rp,225,propname[28]);
  1180.              label(rp,236,propname[0]);
  1181.              label(rp,247,propname[0]);
  1182.              label(rp,258,propname[0]);
  1183.  
  1184.              SetAPen(rp,  1);
  1185.              }
  1186.  
  1187.             else if ((value == karaoke1)|
  1188.                  (value == karaoke2)|
  1189.                  (value == karaoke3))
  1190.              {
  1191.              label(rp, 49,propname[8]);
  1192.              label(rp, 60,propname[24]);
  1193.              label(rp, 71,propname[29]);
  1194.              label(rp, 82,propname[41]);
  1195.              label(rp, 93,propname[0]);
  1196.              label(rp,104,propname[0]);
  1197.              label(rp,115,propname[0]);
  1198.              label(rp,126,propname[0]);
  1199.              label(rp,137,propname[0]);
  1200.              label(rp,148,propname[12]);
  1201.  
  1202.              if (value == karaoke1)
  1203.              {
  1204.              label(rp,159,propname[59]);
  1205.              label(rp,170,propname[58]);
  1206.              label(rp,181,propname[55]);
  1207.              label(rp,192,propname[54]);
  1208.  
  1209.              }
  1210.               else
  1211.              {
  1212.              label(rp,159,propname[0]);
  1213.              label(rp,170,propname[0]);
  1214.              label(rp,181,propname[0]);
  1215.              label(rp,192,propname[0]);
  1216.              }
  1217.  
  1218.              label(rp,203,propname[0]);
  1219.              label(rp,214,propname[0]);
  1220.              label(rp,225,propname[0]);
  1221.              label(rp,236,propname[0]);
  1222.              label(rp,247,propname[0]);
  1223.              label(rp,258,propname[0]);
  1224.  
  1225.              SetAPen(rp,  1);
  1226.              }
  1227.             else if ((value == chorus1)|
  1228.                 (value == chorus2)|
  1229.                 (value == chorus3)|
  1230.                 (value == chorus4)|
  1231.                 (value == celeste1)|
  1232.                 (value == celeste2)|
  1233.                 (value == celeste3)|
  1234.                 (value == celeste4))
  1235.              {
  1236.              label(rp, 49,propname[38]);
  1237.              label(rp, 60,propname[39]);
  1238.              label(rp, 71,propname[24]);
  1239.              label(rp, 82,propname[7]);
  1240.              label(rp, 93,propname[0]);
  1241.              label(rp,104,propname[16]);
  1242.              label(rp,115,propname[17]);
  1243.              label(rp,126,propname[14]);
  1244.              label(rp,137,propname[15]);
  1245.              label(rp,148,propname[12]);
  1246.  
  1247.              if ((value == chorus1)|(value == celeste1))
  1248.              {
  1249.              label(rp,159,propname[59]);
  1250.              label(rp,170,propname[58]);
  1251.              label(rp,181,propname[55]);
  1252.              label(rp,192,propname[54]);
  1253.              }
  1254.               else
  1255.              {
  1256.              label(rp,159,propname[0]);
  1257.              label(rp,170,propname[0]);
  1258.              label(rp,181,propname[0]);
  1259.              label(rp,192,propname[0]);
  1260.              }
  1261.  
  1262.              label(rp,203,propname[0]);
  1263.              label(rp,214,propname[0]);
  1264.              label(rp,225,propname[0]);
  1265.              label(rp,236,propname[0]);
  1266.              label(rp,247,propname[31]);
  1267.              label(rp,258,propname[0]);
  1268.  
  1269.              SetAPen(rp,  1);
  1270.              }
  1271.             else if ((value == flanger1)|
  1272.                 (value == flanger2)|
  1273.                 (value == flanger3))
  1274.              {
  1275.              label(rp, 49,propname[38]);
  1276.              label(rp, 60,propname[39]);
  1277.              label(rp, 71,propname[24]);
  1278.              label(rp, 82,propname[7]);
  1279.              label(rp, 93,propname[0]);
  1280.              label(rp,104,propname[16]);
  1281.              label(rp,115,propname[17]);
  1282.              label(rp,126,propname[14]);
  1283.              label(rp,137,propname[15]);
  1284.              label(rp,148,propname[12]);
  1285.  
  1286.              if (value == flanger1)
  1287.              {
  1288.               label(rp,159,propname[59]);
  1289.               label(rp,170,propname[58]);
  1290.               label(rp,181,propname[55]);
  1291.               label(rp,192,propname[54]);
  1292.              }
  1293.               else
  1294.              {
  1295.               label(rp,159,propname[0]);
  1296.               label(rp,170,propname[0]);
  1297.               label(rp,181,propname[0]);
  1298.               label(rp,192,propname[0]);
  1299.              }
  1300.  
  1301.              label(rp,203,propname[0]);
  1302.              label(rp,214,propname[0]);
  1303.              label(rp,225,propname[0]);
  1304.              label(rp,236,propname[21]);
  1305.              label(rp,247,propname[0]);
  1306.              label(rp,258,propname[0]);
  1307.  
  1308.              SetAPen(rp,  1);
  1309.              }
  1310.             else if ((value == symphonic)|
  1311.                 (value == rotaryspeaker))
  1312.              {
  1313.              label(rp, 49,propname[38]);
  1314.              label(rp, 60,propname[39]);
  1315.              label(rp, 71,propname[7]);
  1316.              label(rp, 82,propname[0]);
  1317.              label(rp, 93,propname[0]);
  1318.              label(rp,104,propname[16]);
  1319.              label(rp,115,propname[17]);
  1320.              label(rp,126,propname[14]);
  1321.              label(rp,137,propname[15]);
  1322.              label(rp,148,propname[12]);
  1323.              label(rp,159,propname[59]);
  1324.              label(rp,170,propname[58]);
  1325.              label(rp,181,propname[55]);
  1326.              label(rp,192,propname[54]);
  1327.              label(rp,203,propname[0]);
  1328.              label(rp,214,propname[0]);
  1329.              label(rp,225,propname[0]);
  1330.              label(rp,236,propname[0]);
  1331.              label(rp,247,propname[0]);
  1332.              label(rp,258,propname[0]);
  1333.  
  1334.              SetAPen(rp,  1);
  1335.              }
  1336.             else if (value == tremolo)
  1337.              {
  1338.              label(rp, 49,propname[38]);
  1339.              label(rp, 60,propname[1]);
  1340.              label(rp, 71,propname[45]);
  1341.              label(rp, 82,propname[0]);
  1342.              label(rp, 93,propname[0]);
  1343.              label(rp,104,propname[16]);
  1344.              label(rp,115,propname[17]);
  1345.              label(rp,126,propname[14]);
  1346.              label(rp,137,propname[15]);
  1347.              label(rp,148,propname[12]);
  1348.              label(rp,159,propname[59]);
  1349.              label(rp,170,propname[58]);
  1350.              label(rp,181,propname[55]);
  1351.              label(rp,192,propname[54]);
  1352.              label(rp,203,propname[0]);
  1353.              label(rp,214,propname[0]);
  1354.              label(rp,225,propname[0]);
  1355.              label(rp,236,propname[21]);
  1356.              label(rp,247,propname[31]);
  1357.              label(rp,258,propname[0]);
  1358.  
  1359.              SetAPen(rp,  1);
  1360.              }
  1361.             else if (value == autopan)
  1362.              {
  1363.              label(rp, 49,propname[38]);
  1364.              label(rp, 60,propname[33]);
  1365.              label(rp, 71,propname[23]);
  1366.              label(rp, 82,propname[43]);
  1367.              label(rp, 93,propname[0]);
  1368.              label(rp,104,propname[16]);
  1369.              label(rp,115,propname[17]);
  1370.              label(rp,126,propname[14]);
  1371.              label(rp,137,propname[15]);
  1372.              label(rp,148,propname[12]);
  1373.              label(rp,159,propname[59]);
  1374.              label(rp,170,propname[58]);
  1375.              label(rp,181,propname[55]);
  1376.              label(rp,192,propname[54]);
  1377.              label(rp,203,propname[0]);
  1378.              label(rp,214,propname[0]);
  1379.              label(rp,225,propname[0]);
  1380.              label(rp,236,propname[0]);
  1381.              label(rp,247,propname[0]);
  1382.              label(rp,258,propname[0]);
  1383.  
  1384.              SetAPen(rp,  1);
  1385.              }
  1386.             else if ((value == phaser1)|
  1387.                 (value == phaser2))
  1388.              {
  1389.              label(rp, 49,propname[38]);
  1390.              label(rp, 60,propname[39]);
  1391.              label(rp, 71,propname[44]);
  1392.              label(rp, 82,propname[24]);
  1393.              label(rp, 93,propname[0]);
  1394.              label(rp,104,propname[16]);
  1395.              label(rp,115,propname[17]);
  1396.              label(rp,126,propname[14]);
  1397.              label(rp,137,propname[15]);
  1398.              label(rp,148,propname[12]);
  1399.  
  1400.              if (value == phaser1)
  1401.              {
  1402.              label(rp,159,propname[59]);
  1403.              label(rp,170,propname[58]);
  1404.              label(rp,181,propname[55]);
  1405.              label(rp,192,propname[54]);
  1406.              }
  1407.               else
  1408.              {
  1409.              label(rp,159,propname[0]);
  1410.              label(rp,170,propname[0]);
  1411.              label(rp,181,propname[0]);
  1412.              label(rp,192,propname[0]);
  1413.              }
  1414.  
  1415.              label(rp,203,propname[57]);
  1416.              label(rp,214,propname[10]);
  1417.              label(rp,225,propname[21]);
  1418.              label(rp,236,propname[0]);
  1419.              label(rp,247,propname[0]);
  1420.              label(rp,258,propname[0]);
  1421.  
  1422.              SetAPen(rp,  1);
  1423.              }
  1424.             else if ((value == distortion)|
  1425.                 (value == overdrive))
  1426.              {
  1427.              label(rp, 49,propname[11]);
  1428.              label(rp, 60,propname[16]);
  1429.              label(rp, 71,propname[17]);
  1430.              label(rp, 82,propname[41]);
  1431.              label(rp, 93,propname[42]);
  1432.              label(rp,104,propname[0]);
  1433.              label(rp,115,propname[18]);
  1434.              label(rp,126,propname[19]);
  1435.              label(rp,137,propname[20]);
  1436.              label(rp,148,propname[12]);
  1437.  
  1438.              if (value == distortion)
  1439.              {
  1440.              label(rp,159,propname[59]);
  1441.              label(rp,170,propname[58]);
  1442.              label(rp,181,propname[55]);
  1443.              label(rp,192,propname[54]);
  1444.              }
  1445.               else
  1446.              {
  1447.              label(rp,159,propname[0]);
  1448.              label(rp,170,propname[0]);
  1449.              label(rp,181,propname[0]);
  1450.              label(rp,192,propname[0]);
  1451.              }
  1452.              label(rp,203,propname[13]);
  1453.              label(rp,214,propname[0]);
  1454.              label(rp,225,propname[0]);
  1455.              label(rp,236,propname[0]);
  1456.              label(rp,247,propname[0]);
  1457.              label(rp,258,propname[0]);
  1458.  
  1459.              SetAPen(rp,  1);
  1460.              }
  1461.             else if (value == guitaramp)
  1462.              {
  1463.              label(rp, 49,propname[11]);
  1464.              label(rp, 60,propname[2]);
  1465.              label(rp, 71,propname[41]);
  1466.              label(rp, 82,propname[42]);
  1467.              label(rp, 93,propname[0]);
  1468.              label(rp,104,propname[0]);
  1469.              label(rp,115,propname[0]);
  1470.              label(rp,126,propname[0]);
  1471.              label(rp,137,propname[0]);
  1472.              label(rp,148,propname[0]);
  1473.              label(rp,159,propname[59]);
  1474.              label(rp,170,propname[58]);
  1475.              label(rp,181,propname[55]);
  1476.              label(rp,192,propname[54]);
  1477.              label(rp,203,propname[13]);
  1478.              label(rp,214,propname[0]);
  1479.              label(rp,225,propname[0]);
  1480.              label(rp,236,propname[0]);
  1481.              label(rp,247,propname[0]);
  1482.              label(rp,258,propname[0]);
  1483.  
  1484.              SetAPen(rp,  1);
  1485.              }
  1486.             else if (value == autowah)
  1487.              {
  1488.              label(rp, 49,propname[38]);
  1489.              label(rp, 60,propname[39]);
  1490.              label(rp, 71,propname[5]);
  1491.              label(rp, 82,propname[51]);
  1492.              label(rp, 93,propname[0]);
  1493.              label(rp,104,propname[16]);
  1494.              label(rp,115,propname[17]);
  1495.              label(rp,126,propname[14]);
  1496.              label(rp,137,propname[15]);
  1497.              label(rp,148,propname[12]);
  1498.              label(rp,159,propname[59]);
  1499.              label(rp,170,propname[58]);
  1500.              label(rp,181,propname[55]);
  1501.              label(rp,192,propname[54]);
  1502.              label(rp,203,propname[0]);
  1503.              label(rp,214,propname[0]);
  1504.              label(rp,225,propname[0]);
  1505.              label(rp,236,propname[0]);
  1506.              label(rp,247,propname[0]);
  1507.              label(rp,258,propname[0]);
  1508.  
  1509.              SetAPen(rp,  1);
  1510.              }
  1511.             else if (value == monoeq)
  1512.              {
  1513.              label(rp, 49,propname[17]);
  1514.              label(rp, 60,propname[18]);
  1515.              label(rp, 71,propname[19]);
  1516.              label(rp, 82,propname[20]);
  1517.              label(rp, 93,propname[15]);
  1518.              label(rp,104,propname[16]);
  1519.              label(rp,115,propname[14]);
  1520.              label(rp,126,propname[0]);
  1521.              label(rp,137,propname[0]);
  1522.              label(rp,148,propname[0]);
  1523.              label(rp,159,propname[59]);
  1524.              label(rp,170,propname[58]);
  1525.              label(rp,181,propname[55]);
  1526.              label(rp,192,propname[54]);
  1527.              label(rp,203,propname[0]);
  1528.              label(rp,214,propname[0]);
  1529.              label(rp,225,propname[0]);
  1530.              label(rp,236,propname[0]);
  1531.              label(rp,247,propname[0]);
  1532.              label(rp,258,propname[0]);
  1533.  
  1534.              SetAPen(rp,  1);
  1535.              }
  1536.             else if (value == stereoeq)
  1537.              {
  1538.              label(rp, 49,propname[16]);
  1539.              label(rp, 60,propname[17]);
  1540.              label(rp, 71,propname[14]);
  1541.              label(rp, 82,propname[15]);
  1542.              label(rp, 93,propname[0]);
  1543.              label(rp,104,propname[0]);
  1544.              label(rp,115,propname[0]);
  1545.              label(rp,126,propname[0]);
  1546.              label(rp,137,propname[0]);
  1547.              label(rp,148,propname[0]);
  1548.              label(rp,159,propname[59]);
  1549.              label(rp,170,propname[58]);
  1550.              label(rp,181,propname[55]);
  1551.              label(rp,192,propname[54]);
  1552.              label(rp,203,propname[0]);
  1553.              label(rp,214,propname[0]);
  1554.              label(rp,225,propname[0]);
  1555.              label(rp,236,propname[0]);
  1556.              label(rp,247,propname[0]);
  1557.              label(rp,258,propname[0]);
  1558.  
  1559.              SetAPen(rp,  1);
  1560.              }
  1561.         Move(rp,  240,  37);
  1562.         break;
  1563.           case VXONE_GADGET:
  1564.         if ((typeval == gatereverb)|(typeval == reversegate))
  1565.             {
  1566.              inputt = input[value+5];
  1567.              sprintf(inputtext,  "%2.2s",  inputt);
  1568.              SetAPen(rp, 6);
  1569.              SetBPen(rp, 7);
  1570.              SetDrMd(rp,  INVERSVID|JAM2);
  1571.              Move(rp,  50, 49);
  1572.              Text(rp,  inputtext,  2);
  1573.              SetAPen(rp,  2);
  1574.              SetBPen(rp,  0);
  1575.              SetDrMd(rp,  JAM2);
  1576.             }
  1577.         if ((typeval == earlyrefl1)||(typeval == earlyrefl2))
  1578.             {
  1579.              ertypt = ertyp[value];
  1580.              sprintf(ertyptext,  "%3.3s",  ertypt);
  1581.              SetAPen(rp, 6);
  1582.              SetBPen(rp, 7);
  1583.              SetDrMd(rp,  INVERSVID|JAM2);
  1584.              Move(rp,  50, 49);
  1585.              Text(rp,  ertyptext,  3);
  1586.              SetAPen(rp,  2);
  1587.              SetBPen(rp,  0);
  1588.              SetDrMd(rp,  JAM2);
  1589.             }
  1590.          if (typeval == monoeq) value = value + 0x34;
  1591.          if (typeval == stereoeq) value = value + 0x08;
  1592.         Move(rp,  240,  48);
  1593.         break;
  1594.           case VXTWO_GADGET:
  1595.         if (typeval == guitaramp)
  1596.             {
  1597.              atypt = atyp[value];
  1598.              sprintf(atyptext,  "%5.5s",  atypt);
  1599.              SetAPen(rp, 6);
  1600.              SetBPen(rp, 7);
  1601.              SetDrMd(rp,  INVERSVID|JAM2);
  1602.              Move(rp,  38, 60);
  1603.              Text(rp,  atyptext,  5);
  1604.              SetAPen(rp,  2);
  1605.              SetBPen(rp,  0);
  1606.              SetDrMd(rp,  JAM2);
  1607.             }
  1608.          if (typeval == monoeq) value = value + 0x1c;
  1609.          if (typeval == stereoeq) value = value + 0x34;
  1610.         Move(rp,  240,  59);
  1611.         break;
  1612.           case VXTHREE_GADGET:
  1613.          if (typeval == monoeq) value = value + 0x34;
  1614.          if (typeval == stereoeq) value = value + 0x1c;
  1615.         Move(rp,  240,  70);
  1616.         break;
  1617.           case VXFOUR_GADGET:
  1618.         if (typeval == crossdelay)
  1619.             {
  1620.              inputt = input[value+2];
  1621.              sprintf(inputtext,  "%2.2s",  inputt);
  1622.              SetAPen(rp, 6);
  1623.              SetBPen(rp, 7);
  1624.              SetDrMd(rp,  INVERSVID|JAM2);
  1625.              Move(rp,  55, 82);
  1626.              Text(rp,  inputtext,  2);
  1627.              SetAPen(rp,  2);
  1628.              SetBPen(rp,  0);
  1629.              SetDrMd(rp,  JAM2);
  1630.             }
  1631.         if (typeval == autopan)
  1632.             {
  1633.              pdirt = pdir[value];
  1634.              sprintf(pdirtext,  "%4.4s",  pdirt);
  1635.              SetAPen(rp, 6);
  1636.              SetBPen(rp, 7);
  1637.              SetDrMd(rp,  INVERSVID|JAM2);
  1638.              Move(rp,  40, 82);
  1639.              Text(rp,  pdirtext,  4);
  1640.              SetAPen(rp,  2);
  1641.              SetBPen(rp,  0);
  1642.              SetDrMd(rp,  JAM2);
  1643.             }
  1644.         if ((typeval == karaoke1)|(typeval == karaoke2)|(typeval == karaoke3)) value = value + 0x22;
  1645.         if (typeval == monoeq) value = value + 0x0a;
  1646.         if (typeval == stereoeq) value = value + 0x34;
  1647.         Move(rp,  240,  81);
  1648.         break;
  1649.           case VXFIVE_GADGET:
  1650.         if ((typeval == hall1)|(typeval == hall2)|(typeval == room1)|(typeval == room2)|(typeval == room3)|
  1651.             (typeval == stage1)|(typeval == stage2)|(typeval == plate)) value = value + 0x22;
  1652.         else if (typeval == monoeq) value = value + 0x34;
  1653.         Move(rp,  240,  92);
  1654.         break;
  1655.           case VXSIX_GADGET:
  1656.         if ((typeval == chorus1)|(typeval == chorus2)|(typeval == chorus3)|(typeval == chorus4)|
  1657.             (typeval == celeste1)|(typeval == celeste2)|(typeval == celeste3)|(typeval == celeste4)|
  1658.             (typeval == flanger1)|(typeval == flanger2)|(typeval == flanger3)|(typeval == symphonic)|
  1659.             (typeval == rotaryspeaker)|(typeval == tremolo)|(typeval == autopan)|
  1660.             (typeval == phaser1)|(typeval == phaser2)) value = value + 0x08;
  1661.          if (typeval == monoeq) value = value + 0x08;
  1662.         Move(rp,  240,  103);
  1663.         break;
  1664.           case VXSEVEN_GADGET:
  1665.         if ((typeval == earlyrefl1)|(typeval == earlyrefl2)|
  1666.             (typeval == gatereverb)|(typeval == reversegate)) value = value + 0x22;
  1667.         if ((typeval == chorus1)|(typeval == chorus2)|(typeval == chorus3)|(typeval == chorus4)|
  1668.             (typeval == celeste1)|(typeval == celeste2)|(typeval == celeste3)|(typeval == celeste4)|
  1669.             (typeval == flanger1)|(typeval == flanger2)|(typeval == flanger3)|(typeval == symphonic)|
  1670.             (typeval == rotaryspeaker)|(typeval == tremolo)|(typeval == autopan)|
  1671.             (typeval == phaser1)|(typeval == phaser2)) value = value + 0x34;
  1672.          if (typeval == monoeq) value = value + 0x1c;
  1673.         Move(rp,  240,  114);
  1674.         break;
  1675.           case VXEIGHT_GADGET:
  1676.         if ((typeval == chorus1)|(typeval == chorus2)|(typeval == chorus3)|(typeval == chorus4)|
  1677.             (typeval == celeste1)|(typeval == celeste2)|(typeval == celeste3)|(typeval == celeste4)|
  1678.             (typeval == flanger1)|(typeval == flanger2)|(typeval == flanger3)|(typeval == symphonic)|
  1679.             (typeval == rotaryspeaker)|(typeval == tremolo)|(typeval == autopan)|
  1680.             (typeval == phaser1)|(typeval == phaser2)) value = value + 0x1c;
  1681.         Move(rp,  240,  125);
  1682.         break;
  1683.           case VXNINE_GADGET:
  1684.         if ((typeval == chorus1)|(typeval == chorus2)|(typeval == chorus3)|(typeval == chorus4)|
  1685.             (typeval == celeste1)|(typeval == celeste2)|(typeval == celeste3)|(typeval == celeste4)|
  1686.             (typeval == flanger1)|(typeval == flanger2)|(typeval == flanger3)|(typeval == symphonic)|
  1687.             (typeval == rotaryspeaker)|(typeval == tremolo)|(typeval == autopan)|
  1688.             (typeval == phaser1)|(typeval == phaser2)) value = value + 0x34;
  1689.         Move(rp,  240,  136);
  1690.         break;
  1691.           case VXTEN_GADGET:
  1692.         Move(rp,  240,  147);
  1693.         break;
  1694.           case VXELEVEN_GADGET:
  1695.         Move(rp,  240,  158);
  1696.         break;
  1697.           case VXTWELVE_GADGET:
  1698.         Move(rp,  240,  169);
  1699.         break;
  1700.           case VXTHIRTEEN_GADGET:
  1701.         Move(rp,  240,  180);
  1702.         break;
  1703.           case VXFOURTEEN_GADGET:
  1704.         Move(rp,  240,  191);
  1705.         break;
  1706.           case VXFIFTEEN_GADGET:
  1707.         if ((typeval == phaser1)|(typeval == phaser2)) value = value + 0x03;
  1708.         Move(rp,  240,  202);
  1709.         break;
  1710.           case VXSIXTEEN_GADGET:
  1711.         Move(rp,  240,  213);
  1712.         break;
  1713.           case VXSEVENTEEN_GADGET:
  1714.         if ((typeval == delaylcr)|(typeval == delaylr)|(typeval == echo)|(typeval == crossdelay)) value = value + 0x08;
  1715.         if ((typeval == phaser1)|(typeval == phaser2)) value = value + 0x04;
  1716.         Move(rp,  240,  224);
  1717.         break;
  1718.           case VXEIGHTEEN_GADGET:
  1719.         if ((typeval == delaylcr)|(typeval == delaylr)|(typeval == echo)|(typeval == crossdelay)) value = value + 0x34;
  1720.         if ((value == flanger1)|(value == flanger3))value = value + 0x04;
  1721.         if (typeval == tremolo) value = value + 0x04;
  1722.         Move(rp,  240,  235);
  1723.         break;
  1724.           case VXNINETEEN_GADGET:
  1725.         if  ((typeval == chorus1)|(typeval == chorus2)|(typeval == chorus3)|(typeval == chorus4)|
  1726.             (typeval == celeste1)|(typeval == celeste2)|(typeval == celeste3)|(typeval == celeste4)|(typeval == tremolo))
  1727.             {
  1728.              inputt = input[value];
  1729.              sprintf(inputtext,  "%2.2s",  inputt);
  1730.              SetAPen(rp, 6);
  1731.              SetBPen(rp, 7);
  1732.              SetDrMd(rp,  INVERSVID|JAM2);
  1733.              Move(rp,  55, 247);
  1734.              Text(rp,  inputtext,  2);
  1735.              SetAPen(rp,  2);
  1736.              SetBPen(rp,  0);
  1737.              SetDrMd(rp,  JAM2);
  1738.             }
  1739.         if ((typeval == delaylcr)|(typeval == delaylr)|(typeval == echo)|(typeval == crossdelay)) value = value + 0x1c;
  1740.         Move(rp,  240,  246);
  1741.         break;
  1742.           case VXTWENTY_GADGET:
  1743.         if ((typeval == delaylcr)||(typeval == delaylr)||(typeval == echo)||(typeval == crossdelay)) value = value + 0x34;
  1744.         Move(rp,  240,  257);
  1745.         break;
  1746.           default:
  1747.         break;
  1748.           }
  1749.   SetAPen(rp,  1);
  1750.   SetBPen(rp,  0);
  1751.   SetDrMd(rp,  JAM2);
  1752.   sprintf(text,  "%3ld",  value);
  1753.   Text(rp,  text,  3);
  1754.  
  1755.   return value;
  1756. }
  1757.  
  1758. //to hear the changes
  1759.  
  1760. static void send_note(struct VXXGTool *tool,  const long time,  const UBYTE note)
  1761. {
  1762.   struct NoteEvent *on_event = (struct NoteEvent *)(*functions->allocevent)();
  1763.   if (on_event)
  1764.     {
  1765.       struct NoteEvent *off_event = (struct NoteEvent *)(*functions->allocevent)();
  1766.       if (off_event)
  1767.     {
  1768.       on_event->next  =
  1769.       off_event->next = NULL;
  1770.  
  1771.       on_event->type  =
  1772.       off_event->type = EVENT_VOICE;
  1773.  
  1774.       on_event->status  = MIDI_NOTEON;
  1775.       off_event->status = MIDI_NOTEOFF;
  1776.  
  1777.       on_event->value  =
  1778.       off_event->value = note;
  1779.  
  1780.       on_event->velocity = 80;
  1781.  
  1782.       on_event->time  = time;
  1783.       off_event->time = time + 96;
  1784.  
  1785.       on_event->tool  =
  1786.       off_event->tool = tool->tool.next;
  1787.  
  1788.       (*functions->qevent)(on_event);
  1789.       (*functions->qevent)(off_event);
  1790.     }
  1791.       else
  1792.     {
  1793.       (*functions->freeevent)(on_event);
  1794.     }
  1795.     }
  1796. }
  1797.  
  1798.  
  1799.  
  1800. static void initvalues(struct Window *window, struct VXXGTool *tool, int init, UBYTE initswich)
  1801. {
  1802.   int i,a,b = init*20;
  1803. //initialvalues for the sliders
  1804.  UBYTE initval[]={
  1805. // 42   44   46   48   4a   4c   4e   50   52   54   56   57   58   59   70   71   72   73   74   75
  1806.    0x12,0x0a,0x08,0x0d,0x0f,0x00,0x00,0x00,0x00,0x28,0x40,0x40,0x00,0x00,0x00,0x04,0x32,0x40,0x40,0x00,    //Hall1
  1807.    0x19,0x0a,0x1c,0x06,0x0c,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x0d,0x03,0x4a,0x40,0x40,0x00,    //Hall2
  1808.    0x05,0x0a,0x10,0x04,0x0f,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x05,0x03,0x40,0x40,0x40,0x00,    //Room1
  1809.    0x0c,0x0a,0x05,0x04,0x04,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x03,0x32,0x40,0x40,0x00,    //Room2
  1810.    0x09,0x0a,0x2f,0x05,0x02,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x03,0x3c,0x40,0x40,0x00,    //Room3
  1811.  
  1812.    0x13,0x0a,0x10,0x07,0x14,0x00,0x00,0x00,0x00,0x28,0x40,0x40,0x00,0x00,0x00,0x03,0x40,0x40,0x40,0x00,    //Stage1
  1813.    0x0b,0x0a,0x10,0x07,0x11,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x02,0x02,0x40,0x40,0x40,0x00,    //Stage2
  1814.    0x19,0x0a,0x06,0x08,0x0f,0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x02,0x03,0x40,0x40,0x40,0x00,    //Plate
  1815.  
  1816.    0x1a,0x0d,0x27,0x27,0x4a,0x64,0x0a,0x00,0x00,0x20,0x40,0x40,0x00,0x00,0x00,0x00,0x14,0x0c,0x12,0x0c,    //Delay LCR
  1817.    0x13,0x1d,0x1d,0x1d,0x57,0x0a,0x00,0x00,0x00,0x20,0x40,0x40,0x00,0x00,0x00,0x00,0x14,0x0c,0x12,0x0c,    //Delay LR
  1818.    0x0d,0x50,0x0d,0x50,0x0a,0x0d,0x0d,0x00,0x00,0x28,0x40,0x40,0x00,0x00,0x00,0x00,0x14,0x0c,0x12,0x0c,    //Echo
  1819.    0x0d,0x0d,0x6f,0x01,0x0a,0x00,0x00,0x00,0x00,0x20,0x40,0x40,0x00,0x00,0x00,0x00,0x14,0x0c,0x12,0x0c,    //Cross Delay
  1820.  
  1821.    0x00,0x13,0x05,0x10,0x40,0x00,0x0c,0x00,0x00,0x20,0x40,0x40,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,    //Early Reflection 1
  1822.    0x00,0x13,0x05,0x10,0x40,0x00,0x0c,0x00,0x00,0x20,0x40,0x40,0x00,0x00,0x05,0x00,0x04,0x00,0x00,0x00,    //Early Reflection 2
  1823.  
  1824.    0x00,0x0f,0x06,0x02,0x40,0x00,0x0a,0x00,0x00,0x20,0x40,0x40,0x00,0x00,0x04,0x03,0x0a,0x00,0x00,0x00,    //Gate Reverb
  1825.    0x00,0x0f,0x06,0x02,0x40,0x00,0x0d,0x00,0x00,0x20,0x40,0x40,0x00,0x00,0x04,0x03,0x0a,0x00,0x00,0x00,    //Reverse Gate
  1826.  
  1827.    0x3f,0x61,0x00,0x0e,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Karaoke 1
  1828.    0x37,0x69,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Karaoke 2
  1829.    0x2b,0x6e,0x0e,0x13,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Karaoke 3
  1830.  
  1831.    0x06,0x36,0x4d,0x6a,0x00,0x14,0x0c,0x12,0x0c,0x40,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Chorus 1
  1832.    0x08,0x3f,0x40,0x1e,0x00,0x14,0x0a,0x0e,0x06,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Chorus 2
  1833.    0x04,0x2c,0x40,0x6e,0x00,0x14,0x0c,0x12,0x0e,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Chorus 3
  1834.    0x07,0x20,0x45,0x68,0x00,0x14,0x0c,0x12,0x0c,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Chorus 4
  1835.  
  1836.    0x0c,0x20,0x40,0x00,0x00,0x14,0x0c,0x12,0x0c,0x7f,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Celeste 1
  1837.    0x1c,0x12,0x5a,0x02,0x00,0x14,0x0a,0x0e,0x08,0x54,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Celeste 2
  1838.    0x04,0x3f,0x2c,0x02,0x00,0x14,0x0c,0x12,0x10,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Celeste 3
  1839.    0x07,0x1d,0x40,0x00,0x00,0x14,0x0c,0x17,0x0e,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,    //Celeste 4
  1840. // 42   44   46   48   4a   4c   4e   50   52   54   56   57   58   59   70   71   72   73   74   75
  1841.    0x0e,0x0e,0x68,0x02,0x00,0x14,0x0c,0x12,0x0c,0x60,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Flanger 1
  1842.    0x20,0x11,0x1a,0x02,0x00,0x14,0x0c,0x12,0x08,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Flanger 2
  1843.    0x03,0x6d,0x6d,0x02,0x00,0x14,0x0c,0x12,0x0c,0x60,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Flanger 3
  1844.  
  1845.    0x0c,0x19,0x10,0x00,0x00,0x1c,0x0c,0x12,0x0c,0x7f,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Symphonic
  1846.    0x51,0x23,0x00,0x00,0x00,0x18,0x08,0x11,0x02,0x7f,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Rotary Speaker
  1847.    0x53,0x38,0x00,0x00,0x00,0x1c,0x08,0x12,0x0c,0x00,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,    //Tremolo
  1848.    0x4c,0x50,0x20,0x05,0x00,0x1c,0x0c,0x12,0x0c,0x00,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Auto Pan
  1849.  
  1850.    0x08,0x6f,0x4a,0x68,0x00,0x14,0x0c,0x12,0x0c,0x40,0x40,0x40,0x00,0x00,0x06,0x01,0x40,0x00,0x00,0x00,    //Phaser 1
  1851.    0x08,0x6f,0x4a,0x6c,0x00,0x14,0x0c,0x12,0x0c,0x40,0x00,0x00,0x00,0x00,0x05,0x01,0x04,0x00,0x00,0x00,    //Phaser 1
  1852.  
  1853.    0x28,0x0c,0x14,0x13,0x30,0x00,0x0f,0x16,0x00,0x7f,0x40,0x40,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,    //Distortion
  1854.    0x1d,0x10,0x10,0x0b,0x37,0x00,0x0d,0x14,0x00,0x7f,0x00,0x00,0x00,0x00,0x68,0x00,0x00,0x00,0x00,0x00,    //Overdrive
  1855.  
  1856.    0x27,0x01,0x0e,0x2d,0x37,0x00,0x00,0x00,0x00,0x7f,0x40,0x40,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,    //Guitar Amp
  1857.  
  1858.    0x46,0x38,0x27,0x0f,0x00,0x14,0x0e,0x13,0x0c,0x7f,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //Auto Wah
  1859.  
  1860.    0x12,0x06,0x08,0x00,0x12,0x14,0x12,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,    //3-Band Equalizer (mono)
  1861.    0x14,0x12,0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };  //2-Band Equalizer (stereo)
  1862.  
  1863. //rangevalues for the sliders
  1864.   UBYTE range[]={
  1865.  // 42   44   46   48   4a   4c   4e   50   52   54   56   57   58   59   70   71   72   73   74   75
  1866.    0x46,0x0b,0x40,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x05,0x80,0x80,0x80,0x80,    //Hall1
  1867.    0x46,0x0b,0x40,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x05,0x80,0x80,0x80,0x80,    //Hall2
  1868.    0x46,0x0b,0x40,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x05,0x80,0x80,0x80,0x80,    //Room1
  1869.    0x46,0x0b,0x40,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x05,0x80,0x80,0x80,0x80,    //Room2
  1870.    0x46,0x0b,0x40,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x05,0x80,0x80,0x80,0x80,    //Room3
  1871.    0x46,0x0b,0x40,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x05,0x80,0x80,0x80,0x80,    //Stage1
  1872.    0x46,0x0b,0x40,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x05,0x80,0x80,0x80,0x80,    //Stage2
  1873.    0x46,0x0b,0x40,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x40,0x05,0x80,0x80,0x80,0x80,    //Plate
  1874.  
  1875.    0x80,0x80,0x80,0x80,0x80,0x80,0x0a,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,    //Delay LCR
  1876.    0x80,0x80,0x80,0x80,0x80,0x0a,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,    //Delay LR
  1877.    0x80,0x80,0x80,0x80,0x0a,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,    //Echo
  1878.    0x80,0x80,0x80,0x03,0x80,0x0a,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,    //Cross Delay
  1879.  
  1880.    0x06,0x2d,0x0b,0x40,0x80,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0b,0x04,0x0a,0x80,0x80,0x80,    //Early Reflection 1
  1881.    0x06,0x2d,0x0b,0x40,0x80,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0b,0x04,0x0a,0x80,0x80,0x80,    //Early Reflection 2
  1882.  
  1883.    0x02,0x2d,0x0b,0x40,0x80,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0b,0x04,0x0a,0x80,0x80,0x80,    //Gate Reverb
  1884.    0x02,0x2d,0x0b,0x40,0x80,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x0b,0x04,0x0a,0x80,0x80,0x80,    //Reverse Gate
  1885.  
  1886.    0x80,0x80,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,    //Karaoke 1
  1887.    0x80,0x80,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,    //Karaoke 2
  1888.    0x80,0x80,0x35,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,    //Karaoke 3
  1889.  
  1890.    0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x02,0x80,    //Chorus 1
  1891.    0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x02,0x80,    //Chorus 2
  1892.    0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x02,0x80,    //Chorus 3
  1893.    0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x02,0x80,    //Chorus 4
  1894.    0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x02,0x80,    //Celeste 1
  1895.    0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x02,0x80,    //Celeste 2
  1896.    0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x02,0x80,    //Celeste 3
  1897.    0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x02,0x80,    //Celeste 1
  1898.  
  1899.    0x80,0x80,0x80,0x40,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x78,0x80,0x80,    //Flanger 1
  1900.    0x80,0x80,0x80,0x40,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x78,0x80,0x80,    //Flanger 2
  1901.    0x80,0x80,0x80,0x40,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x78,0x80,0x80,    //Flanger 3
  1902.  
  1903.    0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,    //Symphonic
  1904.    0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,    //Rotary Speaker
  1905.    0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x78,0x02,0x80,    //Tremolo
  1906.    0x80,0x80,0x80,0x06,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,    //Auto Pan
  1907.  
  1908.    0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x07,0x07,0x78,0x80,0x80,0x80,    //Phaser 1
  1909.    0x80,0x80,0x80,0x80,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x07,0x07,0x78,0x80,0x80,0x80,    //Phaser 2
  1910.  
  1911.    0x80,0x21,0x19,0x1b,0x80,0x80,0x1b,0x19,0x6e,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,    //Distortion
  1912.    0x80,0x21,0x19,0x1b,0x80,0x80,0x1b,0x19,0x6e,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,    //Overdrive
  1913.  
  1914.    0x80,0x04,0x1b,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,    //Guitar Amp
  1915.    0x80,0x80,0x80,0x6e,0x80,0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,    //Auto Wah
  1916.    0x19,0x1f,0x21,0x6e,0x19,0x21,0x1f,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,    //3-Band Equalizer (mono)
  1917.    0x21,0x19,0x1f,0x19,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80};   //2-Band Equalizer (stereo)
  1918.  
  1919.  if (initswich == 1)
  1920.   {
  1921.     tool->vrfxone       = initval[0+b];
  1922.     tool->vrfxtwo       = initval[1+b];
  1923.     tool->vrfxthree     = initval[2+b];
  1924.     tool->vrfxfour      = initval[3+b];
  1925.     tool->vrfxfive      = initval[4+b];
  1926.     tool->vrfxsix       = initval[5+b];
  1927.     tool->vrfxseven     = initval[6+b];
  1928.     tool->vrfxeight     = initval[7+b];
  1929.     tool->vrfxnine      = initval[8+b];
  1930.     tool->vrfxten       = initval[9+b];
  1931.     tool->vrfxeleven    = initval[10+b];
  1932.     tool->vrfxtwelve    = initval[11+b];
  1933.     tool->vrfxthirteen  = initval[12+b];
  1934.     tool->vrfxfourteen  = initval[13+b];
  1935.     tool->vrfxfifteen   = initval[14+b];
  1936.     tool->vrfxsixteen   = initval[15+b];
  1937.     tool->vrfxseventeen = initval[16+b];
  1938.     tool->vrfxeighteen  = initval[17+b];
  1939.     tool->vrfxnineteen  = initval[18+b];
  1940.     tool->vrfxtwenty    = initval[19+b];
  1941.   }
  1942.  
  1943.  (*functions->ModifyEmbossedProp)(window,  VXONE_GADGET,        (LONG)tool->vrfxone,      0,  (LONG)range[0+b],  0,  0,  0);
  1944.  (*functions->ModifyEmbossedProp)(window,  VXTWO_GADGET,        (LONG)tool->vrfxtwo,      0,  (LONG)range[1+b],  0,  0,  0);
  1945.  (*functions->ModifyEmbossedProp)(window,  VXTHREE_GADGET,      (LONG)tool->vrfxthree,    0,  (LONG)range[2+b],  0,  0,  0);
  1946.  (*functions->ModifyEmbossedProp)(window,  VXFOUR_GADGET,       (LONG)tool->vrfxfour,     0,  (LONG)range[3+b],  0,  0,  0);
  1947.  (*functions->ModifyEmbossedProp)(window,  VXFIVE_GADGET,       (LONG)tool->vrfxfive,     0,  (LONG)range[4+b],  0,  0,  0);
  1948.  (*functions->ModifyEmbossedProp)(window,  VXSIX_GADGET,        (LONG)tool->vrfxsix,      0,  (LONG)range[5+b],  0,  0,  0);
  1949.  (*functions->ModifyEmbossedProp)(window,  VXSEVEN_GADGET,      (LONG)tool->vrfxseven,    0,  (LONG)range[6+b],  0,  0,  0);
  1950.  (*functions->ModifyEmbossedProp)(window,  VXEIGHT_GADGET,      (LONG)tool->vrfxeight,    0,  (LONG)range[7+b],  0,  0,  0);
  1951.  (*functions->ModifyEmbossedProp)(window,  VXNINE_GADGET,       (LONG)tool->vrfxnine,     0,  (LONG)range[8+b],  0,  0,  0);
  1952.  (*functions->ModifyEmbossedProp)(window,  VXTEN_GADGET,        (LONG)tool->vrfxten,      0,  (LONG)range[9+b],  0,  0,  0);
  1953.  (*functions->ModifyEmbossedProp)(window,  VXELEVEN_GADGET,     (LONG)tool->vrfxeleven,   0,  (LONG)range[10+b],  0,  0,  0);
  1954.  (*functions->ModifyEmbossedProp)(window,  VXTWELVE_GADGET,     (LONG)tool->vrfxtwelve,   0,  (LONG)range[11+b],  0,  0,  0);
  1955.  (*functions->ModifyEmbossedProp)(window,  VXTHIRTEEN_GADGET,   (LONG)tool->vrfxthirteen, 0,  (LONG)range[12+b],  0,  0,  0);
  1956.  (*functions->ModifyEmbossedProp)(window,  VXFOURTEEN_GADGET,   (LONG)tool->vrfxfourteen, 0,  (LONG)range[13+b],  0,  0,  0);
  1957.  (*functions->ModifyEmbossedProp)(window,  VXFIFTEEN_GADGET,    (LONG)tool->vrfxfifteen,  0,  (LONG)range[14+b],  0,  0,  0);
  1958.  (*functions->ModifyEmbossedProp)(window,  VXSIXTEEN_GADGET,    (LONG)tool->vrfxsixteen,  0,  (LONG)range[15+b],  0,  0,  0);
  1959.  (*functions->ModifyEmbossedProp)(window,  VXSEVENTEEN_GADGET,  (LONG)tool->vrfxseventeen,0,  (LONG)range[16+b],  0,  0,  0);
  1960.  (*functions->ModifyEmbossedProp)(window,  VXEIGHTEEN_GADGET,   (LONG)tool->vrfxeighteen, 0,  (LONG)range[17+b],  0,  0,  0);
  1961.  (*functions->ModifyEmbossedProp)(window,  VXNINETEEN_GADGET,   (LONG)tool->vrfxnineteen, 0,  (LONG)range[18+b],  0,  0,  0);
  1962.  (*functions->ModifyEmbossedProp)(window,  VXTWENTY_GADGET,     (LONG)tool->vrfxtwenty,   0,  (LONG)range[19+b],  0,  0,  0);
  1963.  
  1964.  
  1965.     for  (i = VXONE_GADGET; i<=VXTWENTY_GADGET; i +=3)
  1966.     {
  1967.       (*functions->DrawEmbossedProp)(window,  i);
  1968.     }
  1969. }
  1970.  
  1971.  
  1972. //the center off all
  1973.  
  1974. static void __saveds edittoolcode(struct VXXGTool *tool)
  1975. {
  1976.   struct IntuiMessage *message;
  1977.   struct Window *window;
  1978.   LONG class,  code,  time;
  1979.   struct Gadget *gadget;
  1980.   struct NewWindow *newwindow;
  1981.   int i,  ini, vrfxres=0;
  1982.   UBYTE MS, LS;
  1983.   char *storagebt, *MSB;
  1984.  
  1985.   char storage1[32];
  1986.   char storage2[32];
  1987.   char storage3[32];
  1988.   char storage4[32];
  1989.   char storage5[32];
  1990.   char storage6[32];
  1991.   char storage7[32];
  1992.   char storage8[32];
  1993.   char storage9[32];
  1994.   char storage10[32];
  1995.   char storage11[32];
  1996.   char storage12[32];
  1997.   char storage13[32];
  1998.   char storage14[32];
  1999.   char storage15[32];
  2000.   char storage16[32];
  2001.   char storage17[32];
  2002.   char storage18[32];
  2003.   char storage19[32];
  2004.   char storage20[32];
  2005.   char storage21[32];
  2006.  
  2007.  
  2008.  
  2009.   VXXGNewWindowStructure1.Screen = functions->screen;
  2010.  
  2011.   if (tool->tool.touched & TOUCH_EDIT)
  2012.     {
  2013.       VXXGNewWindowStructure1.LeftEdge = tool->tool.left;
  2014.       VXXGNewWindowStructure1.TopEdge = tool->tool.top;
  2015.       VXXGNewWindowStructure1.Width = tool->tool.width;
  2016.       VXXGNewWindowStructure1.Height = tool->tool.height;
  2017.     }
  2018.   
  2019.   if (!tool->tool.touched)
  2020.     {
  2021.       VXXG_tool_init(tool);
  2022.     }
  2023.  
  2024.   newwindow = (struct NewWindow *) (*functions->DupeNewWindow)(&VXXGNewWindowStructure1);
  2025.   if (!newwindow)
  2026.     {
  2027.       return;
  2028.     }
  2029.   newwindow->Title = 0;
  2030.   newwindow->Flags |= BORDERLESS;
  2031.   newwindow->Flags &= ~0xF;
  2032.   newwindow->BlockPen = 0;
  2033.   newwindow->DetailPen = 0;
  2034.  
  2035.   window = (struct Window *) (*functions->FlashyOpenWindow)(newwindow);
  2036.   if (!window) return;
  2037.  
  2038.   tool->tool.window = window;
  2039.   (*functions->EmbossWindowOn)(window, WINDOWCLOSE|WINDOWDEPTH|WINDOWDRAG,  VXXG_NAME, (short)-1, (short)-1, 0, 0);
  2040.  
  2041.   (*functions->FatEmbossedPropOn)(window,  VXTYPE_GADGET,  VXTYPEDOWN_GADGET,
  2042.                  VXTYPEUP_GADGET, (void *)display_routine,  42,  1);
  2043.  
  2044.   (*functions->FatEmbossedPropOn)(window,  VXONE_GADGET,  VXONEDOWN_GADGET,
  2045.                   VXONEUP_GADGET, (void *)display_routine,  128,  1);
  2046.  
  2047.   (*functions->FatEmbossedPropOn)(window,  VXTWO_GADGET,  VXTWODOWN_GADGET,
  2048.                   VXTWOUP_GADGET, (void *)display_routine,  128,  1);
  2049.  
  2050.   (*functions->FatEmbossedPropOn)(window,  VXTHREE_GADGET,  VXTHREEDOWN_GADGET,
  2051.                   VXTHREEUP_GADGET, (void *)display_routine,  128,  1);
  2052.  
  2053.   (*functions->FatEmbossedPropOn)(window,  VXFOUR_GADGET,  VXFOURDOWN_GADGET,
  2054.                   VXFOURUP_GADGET, (void *)display_routine,  128,  1);
  2055.  
  2056.   (*functions->FatEmbossedPropOn)(window,  VXFIVE_GADGET,  VXFIVEDOWN_GADGET,
  2057.                   VXFIVEUP_GADGET, (void *)display_routine, 128,  1);
  2058.  
  2059.   (*functions->FatEmbossedPropOn)(window,  VXSIX_GADGET,  VXSIXDOWN_GADGET,
  2060.                   VXSIXUP_GADGET, (void *)display_routine, 128,  1);
  2061.  
  2062.   (*functions->FatEmbossedPropOn)(window,  VXSEVEN_GADGET,  VXSEVENDOWN_GADGET,
  2063.                   VXSEVENUP_GADGET, (void *)display_routine, 128,  1);
  2064.  
  2065.   (*functions->FatEmbossedPropOn)(window,  VXEIGHT_GADGET,  VXEIGHTDOWN_GADGET,
  2066.                   VXEIGHTUP_GADGET, (void *)display_routine, 128,  1);
  2067.  
  2068.   (*functions->FatEmbossedPropOn)(window,  VXNINE_GADGET,  VXNINEDOWN_GADGET,
  2069.                   VXNINEUP_GADGET, (void *)display_routine, 128,  1);
  2070.  
  2071.   (*functions->FatEmbossedPropOn)(window,  VXTEN_GADGET,  VXTENDOWN_GADGET,
  2072.                   VXTENUP_GADGET, (void *)display_routine,  128,  1);
  2073.  
  2074.   (*functions->FatEmbossedPropOn)(window,  VXELEVEN_GADGET,  VXELEVENDOWN_GADGET,
  2075.                   VXELEVENUP_GADGET, (void *)display_routine,  128,  1);
  2076.  
  2077.   (*functions->FatEmbossedPropOn)(window,  VXTWELVE_GADGET,  VXTWELVEDOWN_GADGET,
  2078.                   VXTWELVEUP_GADGET, (void *)display_routine,  128,  1);
  2079.  
  2080.   (*functions->FatEmbossedPropOn)(window,  VXTHIRTEEN_GADGET,  VXTHIRTEENDOWN_GADGET,
  2081.                   VXTHIRTEENUP_GADGET, (void *)display_routine, 128,  1);
  2082.  
  2083.   (*functions->FatEmbossedPropOn)(window,  VXFOURTEEN_GADGET,  VXFOURTEENDOWN_GADGET,
  2084.                   VXFOURTEENUP_GADGET, (void *)display_routine, 128, 1);
  2085.  
  2086.   (*functions->FatEmbossedPropOn)(window,  VXFIFTEEN_GADGET,  VXFIFTEENDOWN_GADGET,
  2087.                   VXFIFTEENUP_GADGET, (void *)display_routine,  128,  1);
  2088.  
  2089.   (*functions->FatEmbossedPropOn)(window,  VXSIXTEEN_GADGET,  VXSIXTEENDOWN_GADGET,
  2090.                   VXSIXTEENUP_GADGET, (void *)display_routine,  128,  1);
  2091.  
  2092.   (*functions->FatEmbossedPropOn)(window,  VXSEVENTEEN_GADGET,  VXSEVENTEENDOWN_GADGET,
  2093.                   VXSEVENTEENUP_GADGET, (void *)display_routine,  128,  1);
  2094.  
  2095.   (*functions->FatEmbossedPropOn)(window,  VXEIGHTEEN_GADGET,  VXEIGHTEENDOWN_GADGET,
  2096.                   VXEIGHTEENUP_GADGET, (void *)display_routine,  128,  1);
  2097.  
  2098.   (*functions->FatEmbossedPropOn)(window,  VXNINETEEN_GADGET,  VXNINETEENDOWN_GADGET,
  2099.                   VXNINETEENUP_GADGET, (void *)display_routine,  128,  1);
  2100.  
  2101.   (*functions->FatEmbossedPropOn)(window,  VXTWENTY_GADGET,  VXTWENTYDOWN_GADGET,
  2102.                   VXTWENTYUP_GADGET, (void *)display_routine,  128,  1);
  2103.  
  2104.   (*functions->EmbossOn)(window,  WRITE_GADGET,  1);
  2105.  
  2106.   (*functions->ModifyEmbossedProp)(window,  VXTYPE_GADGET,  (LONG)tool->vrfxtype,  0,  0,  0,  0,  0);
  2107.   (*functions->DrawEmbossedProp)(window,  VXTYPE_GADGET);
  2108.   ini = (int)tool->vrfxtype;
  2109.   initvalues(window, tool, ini, 0);
  2110.  
  2111.   send_note(tool,  functions->timenow,  60);
  2112.  
  2113.   for (;;)
  2114.     {
  2115.  
  2116.       message = (struct IntuiMessage *) (*functions->GetIntuiMessage)(window);
  2117.       class = message->Class;
  2118.       code = message->Code;
  2119.       gadget = (struct Gadget *) message->IAddress;
  2120.       class = (*functions->SystemGadgets)(window, class, gadget, code);
  2121.  
  2122.       ReplyMsg((struct Message *)message);
  2123.  
  2124.  
  2125.       if (class == CLOSEWINDOW)
  2126.     {
  2127.       break;
  2128.     }
  2129.       else if (class == GADGETDOWN)
  2130.     {
  2131.       const short id = gadget->GadgetID;
  2132.       time = functions->timenow;
  2133.       switch (id)
  2134.         {
  2135.         case VXTYPE_GADGET:
  2136.           tool->vrfxtype = (UBYTE) (*functions->DragEmbossedProp)(window,  VXTYPE_GADGET);
  2137.           typeval = tool->vrfxtype;
  2138.           sprintf(storage1, "F043104C020140%.4sF7",typehexstr[tool->vrfxtype]);
  2139.           tool->typesysex = storage1;
  2140.           transsysex(tool,  time,  tool->typesysex, 1);
  2141.           ini = (int)tool->vrfxtype;
  2142.           initvalues(window, tool, ini, 1);
  2143.           break;
  2144.         case VXTYPEDOWN_GADGET:
  2145.           tool->vrfxtype = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTYPE_GADGET,  -1,  0);
  2146.           typeval = tool->vrfxtype;
  2147.           sprintf(storage1, "F043104C020140%.4sF7",typehexstr[tool->vrfxtype]);
  2148.           tool->typesysex = storage1;
  2149.           transsysex(tool,  time,  tool->typesysex, 1);
  2150.           ini = (int)tool->vrfxtype;
  2151.           initvalues(window, tool, ini, 1);
  2152.           break;
  2153.         case VXTYPEUP_GADGET:
  2154.           tool->vrfxtype = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTYPE_GADGET,  1,  0);
  2155.           typeval = tool->vrfxtype;
  2156.           sprintf(storage1, "F043104C020140%.4sF7",typehexstr[tool->vrfxtype]);
  2157.           tool->typesysex = storage1;
  2158.           transsysex(tool,  time,  tool->typesysex,1);
  2159.           ini = (int)tool->vrfxtype;
  2160.           initvalues(window, tool, ini, 1);
  2161.           break;
  2162.         case VXONE_GADGET:
  2163.           tool->vrfxone = (UBYTE) (*functions->DragEmbossedProp)(window,  VXONE_GADGET);
  2164.           if ((tool->vrfxtype < 8)|(tool->vrfxtype > 11))
  2165.           {
  2166.           MS = 0;
  2167.           LS = tool->vrfxone;
  2168.           }
  2169.           if (tool->vrfxtype == 8)
  2170.           {
  2171.           MS = tool->vrfxone;
  2172.           LS = 0x05;
  2173.           }
  2174.           if (tool->vrfxtype == 9)
  2175.           {
  2176.           MS = tool->vrfxone;
  2177.           LS = 0x44;
  2178.           }
  2179.           if ((tool->vrfxtype == 10)|(tool->vrfxtype == 11))
  2180.           {
  2181.           MS = tool->vrfxone;
  2182.           LS = 0x24;
  2183.           }
  2184.           sprintf(storage2, "F043104C020142%02lx%02lxF7",MS,LS);
  2185.           tool->onesysex = storage2;
  2186.           transsysex(tool,  time,  tool->onesysex,1);
  2187.           break;
  2188.         case VXONEDOWN_GADGET:
  2189.           tool->vrfxone = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXONE_GADGET,  -1,  0);
  2190.           if ((tool->vrfxtype < 8)|(tool->vrfxtype > 11))
  2191.           {
  2192.           MS = 0;
  2193.           LS = tool->vrfxone;
  2194.           }
  2195.           if (tool->vrfxtype == 8)
  2196.           {
  2197.           MS = tool->vrfxone;
  2198.           LS = 0x05;
  2199.           }
  2200.           if (tool->vrfxtype == 9)
  2201.           {
  2202.           MS = tool->vrfxone;
  2203.           LS = 0x44;
  2204.           }
  2205.           if ((tool->vrfxtype == 10)|(tool->vrfxtype == 11))
  2206.           {
  2207.           MS = tool->vrfxone;
  2208.           LS = 0x24;
  2209.           }
  2210.           sprintf(storage2, "F043104C020142%02lx%02lxF7",MS,LS);
  2211.           tool->onesysex = storage2;
  2212.           transsysex(tool,  time,  tool->onesysex,1);
  2213.           break;
  2214.         case VXONEUP_GADGET:
  2215.           tool->vrfxone = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXONE_GADGET,  1,  0);
  2216.           if ((tool->vrfxtype < 8)|(tool->vrfxtype > 11))
  2217.           {
  2218.           MS = 0;
  2219.           LS = tool->vrfxone;
  2220.           }
  2221.           if (tool->vrfxtype == 8)
  2222.           {
  2223.           MS = tool->vrfxone;
  2224.           LS = 0x05;
  2225.           }
  2226.           if (tool->vrfxtype == 9)
  2227.           {
  2228.           MS = tool->vrfxone;
  2229.           LS = 0x44;
  2230.           }
  2231.           if ((tool->vrfxtype == 10)|(tool->vrfxtype == 11))
  2232.           {
  2233.           MS = tool->vrfxone;
  2234.           LS = 0x24;
  2235.           }
  2236.           sprintf(storage2, "F043104C020142%02lx%02lxF7",MS,LS);
  2237.           tool->onesysex = storage2;
  2238.           transsysex(tool,  time,  tool->onesysex,1);
  2239.           break;
  2240.         case VXTWO_GADGET:
  2241.           tool->vrfxtwo = (UBYTE) (*functions->DragEmbossedProp)(window,  VXTWO_GADGET);
  2242.           if ((tool->vrfxtype < 8)|(tool->vrfxtype > 11))
  2243.           {
  2244.           MS = 0;
  2245.           LS = tool->vrfxtwo;
  2246.           }
  2247.           if (tool->vrfxtype == 8)
  2248.           {
  2249.           MS = tool->vrfxtwo;
  2250.           LS = 0x03;
  2251.           }
  2252.           if (tool->vrfxtype == 9)
  2253.           {
  2254.           MS = tool->vrfxtwo;
  2255.           LS = 0x26;
  2256.           }
  2257.           if (tool->vrfxtype == 10)
  2258.           {
  2259.           MS = 0;
  2260.           LS = tool->vrfxtwo;
  2261.           }
  2262.           if (tool->vrfxtype == 11)
  2263.           {
  2264.           MS = tool->vrfxtwo;
  2265.           LS = 0x56;
  2266.           }
  2267.           sprintf(storage3, "F043104C020144%02lx%02lxF7",MS,LS);
  2268.           tool->twosysex = storage3;
  2269.           transsysex(tool,  time,  tool->twosysex,1);
  2270.           break;
  2271.         case VXTWODOWN_GADGET:
  2272.           tool->vrfxtwo = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTWO_GADGET,  -1,  0);
  2273.           if ((tool->vrfxtype < 8)|(tool->vrfxtype > 11))
  2274.           {
  2275.           MS = 0;
  2276.           LS = tool->vrfxtwo;
  2277.           }
  2278.           if (tool->vrfxtype == 8)
  2279.           {
  2280.           MS = tool->vrfxtwo;
  2281.           LS = 0x03;
  2282.           }
  2283.           if (tool->vrfxtype == 9)
  2284.           {
  2285.           MS = tool->vrfxtwo;
  2286.           LS = 0x26;
  2287.           }
  2288.           if (tool->vrfxtype == 10)
  2289.           {
  2290.           MS = 0;
  2291.           LS = tool->vrfxtwo;
  2292.           }
  2293.           if (tool->vrfxtype == 11)
  2294.           {
  2295.           MS = tool->vrfxtwo;
  2296.           LS = 0x56;
  2297.           }
  2298.           sprintf(storage3, "F043104C020144%02lx%02lxF7",MS,LS);
  2299.           tool->twosysex = storage3;
  2300.           transsysex(tool,  time,  tool->twosysex,1);
  2301.           break;
  2302.         case VXTWOUP_GADGET:
  2303.           tool->vrfxtwo = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTWO_GADGET,  1,  0);
  2304.           if ((tool->vrfxtype < 8)|(tool->vrfxtype > 11))
  2305.           {
  2306.           MS = 0;
  2307.           LS = tool->vrfxtwo;
  2308.           }
  2309.           if (tool->vrfxtype == 8)
  2310.           {
  2311.           MS = tool->vrfxtwo;
  2312.           LS = 0x03;
  2313.           }
  2314.           if (tool->vrfxtype == 9)
  2315.           {
  2316.           MS = tool->vrfxtwo;
  2317.           LS = 0x26;
  2318.           }
  2319.           if (tool->vrfxtype == 10)
  2320.           {
  2321.           MS = 0;
  2322.           LS = tool->vrfxtwo;
  2323.           }
  2324.           if (tool->vrfxtype == 11)
  2325.           {
  2326.           MS = tool->vrfxtwo;
  2327.           LS = 0x56;
  2328.           }
  2329.           sprintf(storage3, "F043104C020144%02lx%02lxF7",MS,LS);
  2330.           tool->twosysex = storage3;
  2331.           transsysex(tool,  time,  tool->twosysex,1);
  2332.           break;
  2333.         case VXTHREE_GADGET:
  2334.           tool->vrfxthree = (UBYTE) (*functions->DragEmbossedProp)(window,  VXTHREE_GADGET);
  2335.           if ((tool->vrfxtype < 8)|(tool->vrfxtype > 11))
  2336.           {
  2337.           MS = 0;
  2338.           LS = tool->vrfxthree;
  2339.           }
  2340.           if (tool->vrfxtype == 8)
  2341.           {
  2342.           MS = tool->vrfxthree;
  2343.           LS = 0x08;
  2344.           }
  2345.           if (tool->vrfxtype == 9)
  2346.           {
  2347.           MS = tool->vrfxthree;
  2348.           LS = 0x28;
  2349.           }
  2350.           if (tool->vrfxtype == 10)
  2351.           {
  2352.           MS = tool->vrfxthree;
  2353.           LS = 0x74;
  2354.           }
  2355.           if (tool->vrfxtype == 11)
  2356.           {
  2357.           MS = 0;
  2358.           LS = tool->vrfxthree;
  2359.           }
  2360.           sprintf(storage4, "F043104C020146%02lx%02lxF7",MS,LS);
  2361.           tool->threesysex = storage4;
  2362.           transsysex(tool,  time,  tool->threesysex,1);
  2363.           break;
  2364.         case VXTHREEDOWN_GADGET:
  2365.           tool->vrfxthree = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTHREE_GADGET,  -1,  0);
  2366.           if ((tool->vrfxtype < 8)|(tool->vrfxtype > 11))
  2367.           {
  2368.           MS = 0;
  2369.           LS = tool->vrfxthree;
  2370.           }
  2371.           if (tool->vrfxtype == 8)
  2372.           {
  2373.           MS = tool->vrfxthree;
  2374.           LS = 0x08;
  2375.           }
  2376.           if (tool->vrfxtype == 9)
  2377.           {
  2378.           MS = tool->vrfxthree;
  2379.           LS = 0x28;
  2380.           }
  2381.           if (tool->vrfxtype == 10)
  2382.           {
  2383.           MS = tool->vrfxthree;
  2384.           LS = 0x74;
  2385.           }
  2386.           if (tool->vrfxtype == 11)
  2387.           {
  2388.           MS = 0;
  2389.           LS = tool->vrfxthree;
  2390.           }
  2391.           sprintf(storage4, "F043104C020146%02lx%02lxF7",MS,LS);
  2392.           tool->threesysex = storage4;
  2393.           transsysex(tool,  time,  tool->threesysex,1);
  2394.           break;
  2395.         case VXTHREEUP_GADGET:
  2396.           tool->vrfxthree = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTHREE_GADGET,  1,  0);
  2397.           if ((tool->vrfxtype < 8)|(tool->vrfxtype > 11))
  2398.           {
  2399.           MS = 0;
  2400.           LS = tool->vrfxthree;
  2401.           }
  2402.           if (tool->vrfxtype == 8)
  2403.           {
  2404.           MS = tool->vrfxthree;
  2405.           LS = 0x08;
  2406.           }
  2407.           if (tool->vrfxtype == 9)
  2408.           {
  2409.           MS = tool->vrfxthree;
  2410.           LS = 0x28;
  2411.           }
  2412.           if (tool->vrfxtype == 10)
  2413.           {
  2414.           MS = tool->vrfxthree;
  2415.           LS = 0x74;
  2416.           }
  2417.           if (tool->vrfxtype == 11)
  2418.           {
  2419.           MS = 0;
  2420.           LS = tool->vrfxthree;
  2421.           }
  2422.           sprintf(storage4, "F043104C020146%02lx%02lxF7",MS,LS);
  2423.           tool->threesysex = storage4;
  2424.           transsysex(tool,  time,  tool->threesysex,1);
  2425.           break;
  2426.         case VXFOUR_GADGET:
  2427.           tool->vrfxfour = (UBYTE) (*functions->DragEmbossedProp)(window,  VXFOUR_GADGET);
  2428.           if ((tool->vrfxtype < 8)|(tool->vrfxtype > 11))
  2429.           {
  2430.           MS = 0;
  2431.           LS = tool->vrfxfour;
  2432.           }
  2433.           if (tool->vrfxtype == 8)
  2434.           {
  2435.           MS = tool->vrfxfour;
  2436.           LS = 0x08;
  2437.           }
  2438.           if (tool->vrfxtype == 9)
  2439.           {
  2440.           MS = tool->vrfxfour;
  2441.           LS = 0x26;
  2442.           }
  2443.           if (tool->vrfxtype == 10)
  2444.           {
  2445.           MS = 0;
  2446.           LS = tool->vrfxfour;
  2447.           }
  2448.           if (tool->vrfxtype == 11)
  2449.           {
  2450.           MS = 0;
  2451.           LS = tool->vrfxfour;
  2452.           }
  2453.           sprintf(storage5, "F043104C020148%02lx%02lxF7",MS,LS);
  2454.           tool->foursysex = storage5;
  2455.           transsysex(tool,  time,  tool->foursysex,1);
  2456.           break;
  2457.         case VXFOURDOWN_GADGET:
  2458.           tool->vrfxfour = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXFOUR_GADGET,  -1,  0);
  2459.           if ((tool->vrfxtype < 8)|(tool->vrfxtype > 11))
  2460.           {
  2461.           MS = 0;
  2462.           LS = tool->vrfxfour;
  2463.           }
  2464.           if (tool->vrfxtype == 8)
  2465.           {
  2466.           MS = tool->vrfxfour;
  2467.           LS = 0x08;
  2468.           }
  2469.           if (tool->vrfxtype == 9)
  2470.           {
  2471.           MS = tool->vrfxfour;
  2472.           LS = 0x26;
  2473.           }
  2474.           if (tool->vrfxtype == 10)
  2475.           {
  2476.           MS = 0;
  2477.           LS = tool->vrfxfour;
  2478.           }
  2479.           if (tool->vrfxtype == 11)
  2480.           {
  2481.           MS = 0;
  2482.           LS = tool->vrfxfour;
  2483.           }
  2484.           sprintf(storage5, "F043104C020148%02lx%02lxF7",MS,LS);
  2485.           tool->foursysex = storage5;
  2486.           transsysex(tool,  time,  tool->foursysex,1);
  2487.           break;
  2488.         case VXFOURUP_GADGET:
  2489.           tool->vrfxfour = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXFOUR_GADGET,  1,  0);
  2490.           if ((tool->vrfxtype < 8)|(tool->vrfxtype > 11))
  2491.           {
  2492.           MS = 0;
  2493.           LS = tool->vrfxfour;
  2494.           }
  2495.           if (tool->vrfxtype == 8)
  2496.           {
  2497.           MS = tool->vrfxfour;
  2498.           LS = 0x08;
  2499.           }
  2500.           if (tool->vrfxtype == 9)
  2501.           {
  2502.           MS = tool->vrfxfour;
  2503.           LS = 0x26;
  2504.           }
  2505.           if (tool->vrfxtype == 10)
  2506.           {
  2507.           MS = 0;
  2508.           LS = tool->vrfxfour;
  2509.           }
  2510.           if (tool->vrfxtype == 11)
  2511.           {
  2512.           MS = 0;
  2513.           LS = tool->vrfxfour;
  2514.           }
  2515.           sprintf(storage5, "F043104C020148%02lx%02lxF7",MS,LS);
  2516.           tool->foursysex = storage5;
  2517.           transsysex(tool,  time,  tool->foursysex,1);
  2518.           break;
  2519.         case VXFIVE_GADGET:
  2520.           tool->vrfxfive = (UBYTE) (*functions->DragEmbossedProp)(window,  VXFIVE_GADGET);
  2521.           sprintf(storage6, "F043104C02014a00%02lxF7", tool->vrfxfive);
  2522.           tool->fivesysex = storage6;
  2523.           transsysex(tool,  time,  tool->fivesysex,1);
  2524.           break;
  2525.         case VXFIVEDOWN_GADGET:
  2526.           tool->vrfxfive = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXFIVE_GADGET,  -1,  0);
  2527.           sprintf(storage6, "F043104C02014a00%02lxF7",tool->vrfxfive);
  2528.           tool->fivesysex = storage6;
  2529.           transsysex(tool,  time,  tool->fivesysex,1);
  2530.           break;
  2531.         case VXFIVEUP_GADGET:
  2532.           tool->vrfxfive = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXFIVE_GADGET,  1,  0);
  2533.           sprintf(storage6, "F043104C02014a00%02lxF7",tool->vrfxfive);
  2534.           tool->fivesysex = storage6;
  2535.           transsysex(tool,  time,  tool->fivesysex,1);
  2536.           break;
  2537.         case VXSIX_GADGET:
  2538.           tool->vrfxsix = (UBYTE) (*functions->DragEmbossedProp)(window,  VXSIX_GADGET);
  2539.           if (tool->vrfxtype == 10)
  2540.           {
  2541.           MS = tool->vrfxsix;
  2542.           LS = 0x24;
  2543.           }
  2544.           else if (tool->vrfxtype == 11)
  2545.           {
  2546.           MS = tool->vrfxsix;
  2547.           LS = 0x20;
  2548.           }
  2549.           else
  2550.           {
  2551.           MS = 0x00;
  2552.           LS = tool->vrfxsix;
  2553.           }
  2554.           sprintf(storage7, "F043104C02014c%02lx%02lxF7",MS,LS);
  2555.           tool->sixsysex = storage7;
  2556.           transsysex(tool,  time,  tool->sixsysex,1);
  2557.           break;
  2558.         case VXSIXDOWN_GADGET:
  2559.           tool->vrfxsix = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXSIX_GADGET,  -1,  0);
  2560.           if (tool->vrfxtype == 10)
  2561.           {
  2562.           MS = tool->vrfxsix;
  2563.           LS = 0x24;
  2564.           }
  2565.           else if (tool->vrfxtype == 11)
  2566.           {
  2567.           MS = tool->vrfxsix;
  2568.           LS = 0x20;
  2569.           }
  2570.           else
  2571.           {
  2572.           MS = 0x00;
  2573.           LS = tool->vrfxsix;
  2574.           }
  2575.           sprintf(storage7, "F043104C02014c%02lx%02lxF7",MS,LS);
  2576.           tool->sixsysex = storage7;
  2577.           transsysex(tool,  time,  tool->sixsysex,1);
  2578.           break;
  2579.         case VXSIXUP_GADGET:
  2580.           tool->vrfxsix = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXSIX_GADGET,  1,  0);
  2581.           if (tool->vrfxtype == 10)
  2582.           {
  2583.           MS = tool->vrfxsix;
  2584.           LS = 0x24;
  2585.           }
  2586.           else if (tool->vrfxtype == 11)
  2587.           {
  2588.           MS = tool->vrfxsix;
  2589.           LS = 0x20;
  2590.           }
  2591.           else
  2592.           {
  2593.           MS = 0x00;
  2594.           LS = tool->vrfxsix;
  2595.           }
  2596.           sprintf(storage7, "F043104C02014c%02lx%02lxF7",MS,LS);
  2597.           tool->sixsysex = storage7;
  2598.           transsysex(tool,  time,  tool->sixsysex,1);
  2599.           break;
  2600.         case VXSEVEN_GADGET:
  2601.           tool->vrfxseven = (UBYTE) (*functions->DragEmbossedProp)(window,  VXSEVEN_GADGET);
  2602.           if (tool->vrfxtype == 8)
  2603.           {
  2604.           MS = 0;
  2605.           LS = tool->vrfxseven;
  2606.           }
  2607.           else if (tool->vrfxtype == 10)
  2608.           {
  2609.           MS = tool->vrfxseven;
  2610.           LS = 0x74;
  2611.           }
  2612.           else
  2613.           {
  2614.           MS = 0;
  2615.           LS = tool->vrfxseven;
  2616.           }
  2617.           sprintf(storage8, "F043104C02014e%02lx%02lxF7",MS,LS);
  2618.           tool->sevensysex = storage8;
  2619.           transsysex(tool,  time,  tool->sevensysex,1);
  2620.           break;
  2621.         case VXSEVENDOWN_GADGET:
  2622.           tool->vrfxseven = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXSEVEN_GADGET,  -1,  0);
  2623.           if (tool->vrfxtype == 8)
  2624.           {
  2625.           MS = 0;
  2626.           LS = tool->vrfxseven;
  2627.           }
  2628.           else if (tool->vrfxtype == 10)
  2629.           {
  2630.           MS = tool->vrfxseven;
  2631.           LS = 0x74;
  2632.           }
  2633.           else
  2634.           {
  2635.           MS = 0;
  2636.           LS = tool->vrfxseven;
  2637.           }
  2638.           sprintf(storage8, "F043104C02014e%02lx%02lxF7",MS,LS);
  2639.           tool->sevensysex = storage8;
  2640.           transsysex(tool,  time,  tool->sevensysex,1);
  2641.           break;
  2642.         case VXSEVENUP_GADGET:
  2643.           tool->vrfxseven = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXSEVEN_GADGET,  1,  0);
  2644.           if (tool->vrfxtype == 8)
  2645.           {
  2646.           MS = 0;
  2647.           LS = tool->vrfxseven;
  2648.           }
  2649.           else if (tool->vrfxtype == 10)
  2650.           {
  2651.           MS = tool->vrfxseven;
  2652.           LS = 0x74;
  2653.           }
  2654.           else
  2655.           {
  2656.           MS = 0;
  2657.           LS = tool->vrfxseven;
  2658.           }
  2659.           sprintf(storage8, "F043104C02014e%02lx%02lxF7",MS,LS);
  2660.           tool->sevensysex = storage8;
  2661.           transsysex(tool,  time,  tool->sevensysex,1);
  2662.           break;
  2663.         case VXEIGHT_GADGET:
  2664.           tool->vrfxeight = (UBYTE) (*functions->DragEmbossedProp)(window,  VXEIGHT_GADGET);
  2665.           if (tool->vrfxtype == 10)
  2666.           {
  2667.           MS = tool->vrfxeight;
  2668.           LS = 0x74;
  2669.           }
  2670.           else
  2671.           {
  2672.           MS = 0;
  2673.           LS = tool->vrfxeight;
  2674.           }
  2675.           sprintf(storage9, "F043104C020150%02lx%02lxF7",MS,LS);
  2676.           tool->eightsysex = storage9;
  2677.           transsysex(tool,  time,  tool->eightsysex,1);
  2678.           break;
  2679.         case VXEIGHTDOWN_GADGET:
  2680.           tool->vrfxeight = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXEIGHT_GADGET,  -1,  0);
  2681.           if (tool->vrfxtype == 10)
  2682.           {
  2683.           MS = tool->vrfxeight;
  2684.           LS = 0x74;
  2685.           }
  2686.           else
  2687.           {
  2688.           MS = 0;
  2689.           LS = tool->vrfxeight;
  2690.           }
  2691.           sprintf(storage9, "F043104C020150%02lx%02lxF7",MS,LS);
  2692.           tool->eightsysex = storage9;
  2693.           transsysex(tool,  time,  tool->eightsysex,1);
  2694.           break;
  2695.         case VXEIGHTUP_GADGET:
  2696.           tool->vrfxeight = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXEIGHT_GADGET,  1,  0);
  2697.           if (tool->vrfxtype == 10)
  2698.           {
  2699.           MS = tool->vrfxeight;
  2700.           LS = 0x74;
  2701.           }
  2702.           else
  2703.           {
  2704.           MS = 0;
  2705.           LS = tool->vrfxeight;
  2706.           }
  2707.           sprintf(storage9, "F043104C020150%02lx%02lxF7",MS,LS);
  2708.           tool->eightsysex = storage9;
  2709.           transsysex(tool,  time,  tool->eightsysex,1);
  2710.           break;
  2711.         case VXNINE_GADGET:
  2712.           tool->vrfxnine = (UBYTE) (*functions->DragEmbossedProp)(window,  VXNINE_GADGET);
  2713.           sprintf(storage10, "F043104C02015200%02lxF7",tool->vrfxnine);
  2714.           tool->ninesysex = storage10;
  2715.           transsysex(tool,  time,  tool->ninesysex,1);
  2716.           break;
  2717.         case VXNINEDOWN_GADGET:
  2718.           tool->vrfxnine = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXNINE_GADGET,  -1,  0);
  2719.           sprintf(storage10, "F043104C02015200%02lxF7",tool->vrfxnine);
  2720.           tool->ninesysex = storage10;
  2721.           transsysex(tool,  time,  tool->ninesysex,1);
  2722.           break;
  2723.         case VXNINEUP_GADGET:
  2724.           tool->vrfxnine = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXNINE_GADGET,  1,  0);
  2725.           sprintf(storage10, "F043104C02015200%02lxF7",tool->vrfxnine);
  2726.           tool->ninesysex = storage10;
  2727.           transsysex(tool,  time,  tool->ninesysex,1);
  2728.           break;
  2729.         case VXTEN_GADGET:
  2730.           tool->vrfxten = (UBYTE) (*functions->DragEmbossedProp)(window,  VXTEN_GADGET);
  2731.           sprintf(storage11, "F043104C02015400%02lxF7",tool->vrfxten);
  2732.           tool->tensysex = storage11;
  2733.           transsysex(tool,  time,  tool->tensysex,1);
  2734.           break;
  2735.         case VXTENDOWN_GADGET:
  2736.           tool->vrfxten = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTEN_GADGET,  -1,  0);
  2737.           sprintf(storage11, "F043104C02015400%02lxF7",tool->vrfxten);
  2738.           tool->tensysex = storage11;
  2739.           transsysex(tool,  time,  tool->tensysex,1);
  2740.           break;
  2741.         case VXTENUP_GADGET:
  2742.           tool->vrfxten = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTEN_GADGET,  1,  0);
  2743.           sprintf(storage11, "F043104C02015400%02lxF7",tool->vrfxten);
  2744.           tool->tensysex = storage11;
  2745.           transsysex(tool,  time,  tool->tensysex,1);
  2746.           break;
  2747.         case VXELEVEN_GADGET:
  2748.           tool->vrfxeleven = (UBYTE) (*functions->DragEmbossedProp)(window,  VXELEVEN_GADGET);
  2749.           sprintf(storage12, "F043104C02056C%02lxF7",tool->vrfxeleven);
  2750.           tool->elevensysex = storage12;
  2751.           transsysex(tool,  time,  tool->elevensysex,1);
  2752.           break;
  2753.         case VXELEVENDOWN_GADGET:
  2754.           tool->vrfxeleven = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXELEVEN_GADGET,  -1,  0);
  2755.           sprintf(storage12, "F043104C020156%02lxF7",tool->vrfxeleven);
  2756.           tool->elevensysex = storage12;
  2757.           transsysex(tool,  time,  tool->elevensysex,1);
  2758.           break;
  2759.         case VXELEVENUP_GADGET:
  2760.           tool->vrfxeleven = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXELEVEN_GADGET,  1,  0);
  2761.           sprintf(storage12, "F043104C020156%02lxF7",tool->vrfxeleven);
  2762.           tool->elevensysex = storage12;
  2763.           transsysex(tool,  time,  tool->elevensysex,1);
  2764.           break;
  2765.         case VXTWELVE_GADGET:
  2766.           tool->vrfxtwelve = (UBYTE) (*functions->DragEmbossedProp)(window,  VXTWELVE_GADGET);
  2767.           sprintf(storage13, "F043104C020157%02lxF7",tool->vrfxtwelve);
  2768.           tool->twelvesysex = storage13;
  2769.           transsysex(tool,  time,  tool->twelvesysex,1);
  2770.           break;
  2771.         case VXTWELVEDOWN_GADGET:
  2772.           tool->vrfxtwelve = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTWELVE_GADGET,  -1,  0);
  2773.           sprintf(storage13, "F043104C020157%02lxF7",tool->vrfxtwelve);
  2774.           tool->twelvesysex = storage13;
  2775.           transsysex(tool,  time,  tool->twelvesysex,1);
  2776.           break;
  2777.         case VXTWELVEUP_GADGET:
  2778.           tool->vrfxtwelve = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTWELVE_GADGET,  1,  0);
  2779.           sprintf(storage13, "F043104C020157%02lxF7",tool->vrfxtwelve);
  2780.           tool->twelvesysex = storage13;
  2781.           transsysex(tool,  time,  tool->twelvesysex,1);
  2782.           break;
  2783.         case VXTHIRTEEN_GADGET:
  2784.           tool->vrfxthirteen = (UBYTE) (*functions->DragEmbossedProp)(window,  VXTHIRTEEN_GADGET);
  2785.           sprintf(storage14, "F043104C020158%02lxF7",tool->vrfxthirteen);
  2786.           tool->thirteensysex = storage14;
  2787.           transsysex(tool,  time,  tool->thirteensysex,1);
  2788.           break;
  2789.         case VXTHIRTEENDOWN_GADGET:
  2790.           tool->vrfxthirteen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTHIRTEEN_GADGET,  -1,  0);
  2791.           sprintf(storage14, "F043104C020158%02lxF7",tool->vrfxthirteen);
  2792.           tool->thirteensysex = storage14;
  2793.           transsysex(tool,  time,  tool->thirteensysex,1);
  2794.           break;
  2795.         case VXTHIRTEENUP_GADGET:
  2796.           tool->vrfxthirteen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTHIRTEEN_GADGET,  1,  0);
  2797.           sprintf(storage14, "F043104C020158%02lxF7",tool->vrfxthirteen);
  2798.           tool->thirteensysex = storage14;
  2799.           transsysex(tool,  time,  tool->thirteensysex,1);
  2800.           break;
  2801.         case VXFOURTEEN_GADGET:
  2802.           tool->vrfxfourteen = (UBYTE) (*functions->DragEmbossedProp)(window,  VXFOURTEEN_GADGET);
  2803.           sprintf(storage15, "F043104C020159%02lxF7",tool->vrfxfourteen);
  2804.           tool->fourteensysex = storage15;
  2805.           transsysex(tool,  time,  tool->fourteensysex,1);
  2806.           break;
  2807.         case VXFOURTEENDOWN_GADGET:
  2808.           tool->vrfxthirteen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXFOURTEEN_GADGET,  -1,  0);
  2809.           sprintf(storage15, "F043104C020159%02lxF7",tool->vrfxfourteen);
  2810.           tool->fourteensysex = storage15;
  2811.           transsysex(tool,  time,  tool->fourteensysex,1);
  2812.           break;
  2813.         case VXFOURTEENUP_GADGET:
  2814.           tool->vrfxthirteen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXFOURTEEN_GADGET,  1,  0);
  2815.           sprintf(storage15, "F043104C020159%02lxF7",tool->vrfxfourteen);
  2816.           tool->fourteensysex = storage15;
  2817.           transsysex(tool,  time,  tool->fourteensysex,1);
  2818.           break;
  2819.         case VXFIFTEEN_GADGET:
  2820.           tool->vrfxfifteen = (UBYTE) (*functions->DragEmbossedProp)(window,  VXFIFTEEN_GADGET);
  2821.           sprintf(storage16, "F043104C020170%02lxF7",tool->vrfxfifteen);
  2822.           tool->fifteensysex = storage16;
  2823.           transsysex(tool,  time,  tool->fifteensysex,1);
  2824.           break;
  2825.         case VXFIFTEENDOWN_GADGET:
  2826.           tool->vrfxfifteen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXFIFTEEN_GADGET,  -1,  0);
  2827.           sprintf(storage16, "F043104C020170%02lxF7",tool->vrfxfifteen);
  2828.           tool->fifteensysex = storage16;
  2829.           transsysex(tool,  time,  tool->fifteensysex,1);
  2830.           break;
  2831.         case VXFIFTEENUP_GADGET:
  2832.           tool->vrfxfifteen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXFIFTEEN_GADGET,  1,  0);
  2833.           sprintf(storage16, "F043104C020170%02lxF7",tool->vrfxfifteen);
  2834.           tool->fifteensysex = storage16;
  2835.           transsysex(tool,  time,  tool->fifteensysex,1);
  2836.           break;
  2837.         case VXSIXTEEN_GADGET:
  2838.           tool->vrfxsixteen = (UBYTE) (*functions->DragEmbossedProp)(window,  VXSIXTEEN_GADGET);
  2839.           sprintf(storage17, "F043104C020171%02lxF7",tool->vrfxsixteen);
  2840.           tool->sixteensysex = storage17;
  2841.           transsysex(tool,  time,  tool->sixteensysex,1);
  2842.           break;
  2843.         case VXSIXTEENDOWN_GADGET:
  2844.           tool->vrfxsixteen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXSIXTEEN_GADGET,  -1,  0);
  2845.           sprintf(storage17, "F043104C020171%02lxF7",tool->vrfxsixteen);
  2846.           tool->sixteensysex = storage17;
  2847.           transsysex(tool,  time,  tool->sixteensysex,1);
  2848.           break;
  2849.         case VXSIXTEENUP_GADGET:
  2850.           tool->vrfxsixteen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXSIXTEEN_GADGET,  1,  0);
  2851.           sprintf(storage17, "F043104C020171%02lxF7",tool->vrfxsixteen);
  2852.           tool->sixteensysex = storage17;
  2853.           transsysex(tool,  time,  tool->sixteensysex,1);
  2854.           break;
  2855.         case VXSEVENTEEN_GADGET:
  2856.           tool->vrfxseventeen = (UBYTE) (*functions->DragEmbossedProp)(window,  VXSEVENTEEN_GADGET);
  2857.           sprintf(storage18, "F043104C020172%02lxF7",tool->vrfxseventeen);
  2858.           tool->seventeensysex = storage18;
  2859.           transsysex(tool,  time,  tool->seventeensysex,1);
  2860.           break;
  2861.         case VXSEVENTEENDOWN_GADGET:
  2862.           tool->vrfxseventeen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXSEVENTEEN_GADGET,  -1,  0);
  2863.           sprintf(storage18, "F043104C020172%02lxF7",tool->vrfxseventeen);
  2864.           tool->seventeensysex = storage18;
  2865.           transsysex(tool,  time,  tool->seventeensysex,1);
  2866.           break;
  2867.         case VXSEVENTEENUP_GADGET:
  2868.           tool->vrfxseventeen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXSEVENTEEN_GADGET,  1,  0);
  2869.           sprintf(storage18, "F043104C020172%02lxF7",tool->vrfxseventeen);
  2870.           tool->seventeensysex = storage18;
  2871.           transsysex(tool,  time,  tool->seventeensysex,1);
  2872.           break;
  2873.         case VXEIGHTEEN_GADGET:
  2874.           tool->vrfxeighteen = (UBYTE) (*functions->DragEmbossedProp)(window,  VXEIGHTEEN_GADGET);
  2875.           sprintf(storage19, "F043104C020173%02lxF7",tool->vrfxeighteen);
  2876.           tool->eighteensysex = storage19;
  2877.           transsysex(tool,  time,  tool->eighteensysex,1);
  2878.           break;
  2879.         case VXEIGHTEENDOWN_GADGET:
  2880.           tool->vrfxeighteen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXEIGHTEEN_GADGET,  -1,  0);
  2881.           sprintf(storage19, "F043104C020173%02lxF7",tool->vrfxeighteen);
  2882.           tool->eighteensysex = storage19;
  2883.           transsysex(tool,  time,  tool->eighteensysex,1);
  2884.           break;
  2885.         case VXEIGHTEENUP_GADGET:
  2886.           tool->vrfxeighteen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXEIGHTEEN_GADGET,  1,  0);
  2887.           sprintf(storage19, "F043104C020173%02lxF7",tool->vrfxeighteen);
  2888.           tool->eighteensysex = storage19;
  2889.           transsysex(tool,  time,  tool->eighteensysex,1);
  2890.           break;
  2891.         case VXNINETEEN_GADGET:
  2892.           tool->vrfxnineteen = (UBYTE) (*functions->DragEmbossedProp)(window,  VXNINETEEN_GADGET);
  2893.           sprintf(storage20, "F043104C020174%02lxF7",tool->vrfxnineteen);
  2894.           tool->nineteensysex = storage20;
  2895.           transsysex(tool,  time,  tool->nineteensysex,1);
  2896.           break;
  2897.         case VXNINETEENDOWN_GADGET:
  2898.           tool->vrfxnineteen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXNINETEEN_GADGET,  -1,  0);
  2899.           sprintf(storage20, "F043104C020174%02lxF7",tool->vrfxnineteen);
  2900.           tool->nineteensysex = storage20;
  2901.           transsysex(tool,  time,  tool->nineteensysex,1);
  2902.           break;
  2903.         case VXNINETEENUP_GADGET:
  2904.           tool->vrfxnineteen = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXNINETEEN_GADGET,  1,  0);
  2905.           sprintf(storage20, "F043104C020174%02lxF7",tool->vrfxnineteen);
  2906.           tool->nineteensysex = storage20;
  2907.           transsysex(tool,  time,  tool->nineteensysex,1);
  2908.           break;
  2909.         case VXTWENTY_GADGET:
  2910.           tool->vrfxtwenty = (UBYTE) (*functions->DragEmbossedProp)(window,  VXTWENTY_GADGET);
  2911.           sprintf(storage21, "F043104C020175%02lxF7",tool->vrfxtwenty);
  2912.           tool->twentysysex = storage21;
  2913.           transsysex(tool,  time,  tool->twentysysex,1);
  2914.           break;
  2915.         case VXTWENTYDOWN_GADGET:
  2916.           tool->vrfxtwenty = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTWENTY_GADGET,  -1,  0);
  2917.           sprintf(storage21, "F043104C020175%02lxF7",tool->vrfxtwenty);
  2918.           tool->twentysysex = storage21;
  2919.           transsysex(tool,  time,  tool->twentysysex,1);
  2920.           break;
  2921.         case VXTWENTYUP_GADGET:
  2922.           tool->vrfxtwenty = (UBYTE) (*functions->ShiftEmbossedProp)(window,  VXTWENTY_GADGET,  1,  0);
  2923.           sprintf(storage21, "F043104C020175%02lxF7",tool->vrfxtwenty);
  2924.           tool->twentysysex = storage21;
  2925.           transsysex(tool,  time,  tool->twentysysex,1);
  2926.           break;
  2927.         case WRITE_GADGET:
  2928.           if ((*functions->areyousure)("write to track ? Play-pointer on right place ?"))
  2929.           {
  2930.           if (!functions->running)
  2931.               {
  2932.               time = functions->starttime;
  2933.               if (tool->typesysex != NULL) transsysex(tool, time, tool->typesysex, 0);
  2934.               if (tool->onesysex != NULL)transsysex(tool, time+1, tool->onesysex, 0);
  2935.               if (tool->twosysex != NULL)transsysex(tool, time+2, tool->twosysex, 0);
  2936.               if (tool->threesysex != NULL)transsysex(tool, time+3, tool->threesysex, 0);
  2937.               if (tool->foursysex != NULL)transsysex(tool, time+4, tool->foursysex, 0);
  2938.               if (tool->fivesysex != NULL)transsysex(tool, time+5, tool->fivesysex, 0);
  2939.               if (tool->sixsysex != NULL)transsysex(tool, time+6, tool->sixsysex, 0);
  2940.               if (tool->sevensysex != NULL)transsysex(tool, time+7, tool->sevensysex, 0);
  2941.               if (tool->eightsysex != NULL)transsysex(tool, time+9, tool->eightsysex, 0);
  2942.               if (tool->ninesysex != NULL)transsysex(tool, time+10, tool->ninesysex, 0);
  2943.               if (tool->tensysex != NULL)transsysex(tool, time+11, tool->tensysex, 0);
  2944.               if (tool->elevensysex != NULL)transsysex(tool, time+12, tool->elevensysex, 0);
  2945.               if (tool->twelvesysex != NULL)transsysex(tool, time+13, tool->twelvesysex, 0);
  2946.               if (tool->thirteensysex != NULL)transsysex(tool, time+14, tool->thirteensysex, 0);
  2947.               if (tool->fourteensysex != NULL)transsysex(tool, time+15, tool->fourteensysex, 0);
  2948.               if (tool->fifteensysex != NULL)transsysex(tool, time+16, tool->fifteensysex, 0);
  2949.               if (tool->sixteensysex != NULL)transsysex(tool, time+17, tool->sixteensysex, 0);
  2950.               if (tool->seventeensysex != NULL)transsysex(tool, time+18, tool->seventeensysex, 0);
  2951.               if (tool->eighteensysex != NULL)transsysex(tool, time+19, tool->eighteensysex, 0);
  2952.               if (tool->nineteensysex != NULL)transsysex(tool, time+20, tool->nineteensysex, 0);
  2953.               if (tool->twentysysex != NULL)transsysex(tool, time+21, tool->twentysysex, 0);
  2954.               }
  2955.           }
  2956.           else {
  2957.            // nothing
  2958.            }
  2959.           break;
  2960.         }
  2961.     send_note(tool,  functions->timenow,  60);
  2962.     }
  2963.       else if (class == GADGETUP)
  2964.     {
  2965.       // Nothing.
  2966.     }
  2967.     }
  2968.   tool->tool.window = 0;
  2969.   tool->tool.left = window->LeftEdge;
  2970.   tool->tool.top = window->TopEdge;
  2971.   tool->tool.width = window->Width;
  2972.   tool->tool.height = window->Height;
  2973.   tool->tool.touched = TOUCH_INIT | TOUCH_EDIT;
  2974.  
  2975.     for  (i = VXONE_GADGET; i <= VXTWENTY_GADGET; i +=3)
  2976.     {
  2977.       (*functions->FatEmbossedPropOff)(window,  i,  i+1, i+2);
  2978.     }
  2979.   (*functions->EmbossOff)(window,  WRITE_GADGET);
  2980.  
  2981.   (*functions->EmbossWindowOff)(window);
  2982.   (*functions->FlashyCloseWindow)(window);
  2983.   (*functions->DeleteNewWindow)(newwindow);
  2984. }
  2985.  
  2986. //to leave the tool correct
  2987.  
  2988. void __saveds removetool()
  2989. {
  2990. FreeVec(VXXG);
  2991. }
  2992.  
  2993. //start of the tool
  2994.  
  2995. struct ToolMaster *
  2996. inittoolmaster()
  2997. {
  2998.   if (!(VXXG=(UWORD *)AllocVec(sizeof (VXXGdata), MEMF_CHIP|MEMF_CLEAR))) return(NULL);
  2999.   CopyMem(&VXXGdata, VXXG,  sizeof (VXXGdata));
  3000.  
  3001.   memset((char *)&master, 0, sizeof(struct ToolMaster));
  3002.   VXXG_image.ImageData = VXXG;
  3003.   master.toolid = VXXG_ID;
  3004.   master.image = &VXXG_image;
  3005.   strcpy(master.name,  VXXG_NAME);
  3006.   master.edittool = edittoolcode;
  3007.   master.processevent = processeventcode;
  3008.   master.tooltype = VXXG_TYPE;
  3009.   master.toolsize = sizeof(struct VXXGTool);
  3010.   master.removetool = removetool;
  3011.   return(&master);
  3012. }
  3013.